ArticlePDF Available

Обучението по информатика и софтуерни технологии: развитие и перспективи

Authors:

Abstract

В статията се проследява развитието на обучението по информатика и софтуерно инженерство на българското висше образование. Анализират се предпоставките за развитие на софтуерното инженерство в учебните дисциплини на бакалавърски и магистърски учебни планове. Направен е преглед на развитието и тенденциите при методите и инструментите за създаване на софтуер. Разработен е модел разкриващ перспективите пред обучението и образование в областта на информатиката и софтуерното инженерство.
Христов, Хр, Хр. Крушков, „Обучението по информатика и софтуерни технологии: развитие и перспективи“,
Образование и технологии, Бургас, година VI, кн.6, 2015г., стр. 388-394. ISSN 1314-1791 (Print), ISSN 1314-1791
(Online) http://itlearning-bg.com/magazines/Spisanie2015/resources/spisanie_e_book_2015.pdf
394
ОБУЧЕНИЕТО ПО ИНФОРМАТИКА И СОФТУЕРНИ ТЕХНОЛОГИИ: РАЗВИТИЕ И ПЕРСПЕКТИВИ
ас. Христо Тошков Христов, доц. д-р Христо Димитров Крушков ПУ „Паисий Хилендарски“,
Факултет по математика и информатика, гр. Пловдив
EDUCATION IN INFORMATICS AND SOFTWARE ENGINEERING: DEVELOPMENT AND FUTURE
DIRECTIONS
Hristo Toshkov Hristov, Hristo Dimitrov Krushkov Plovdiv University „Paisii Hilendarski“, Faculty of
Mathematics and Informatics
* Авторите изказват благодарност към научен проект НИ 15 ФМИ-004 към Фонд „НИ“ на ПУ,
„Иновативни фундаментални и приложни научни изследвания по компютърни науки, математика и
педагогика на обучението“ за частичното финансиране на настоящата работа.
Abstract: This paper traces the development of teaching informatics and software engineering in Bulgarian
higher education, which follows and pursues professional and scientific development of these areas.
Prerequisites are analysed of software engineering to evolve from a discipline to bachelors and masters degree
programmes. A review is made of developments and trends in the methods and tools for creation and
implementation of software in the terms of software production. A model was developed based on critical
analysis and evaluation, revealing prospects for future education in informatics and software engineering.
Several levels of training are presented with different abstraction and difficulty called „Software practices“,
„Object-oriented approaches, techniques and practises of software development“, „Modelling, creation, and
application of software processes“, and „Management and implementation of software projects“.
Keywords: Software engineering, software development, teaching methodology
Въведение
През изминалия век и особено отчетливо през последните две десетилетия човечеството е
изправено пред необходимостта да обработва все по-голям обем от информация. Намирането на
решения за удовлетворяването на тази обществена потребност е комплексно социално явление,
обединяващо редица различни по характер научни областни, всички от които вземат за свой предмет на
изследване обекта информация. С времето, провеждането на проучвания и множество систематизирани
изследвания над информацията довеждат до формирането на нова научна област, днес добре известна
с името информатика.
Произход и развитие на образованието и обучението по информатика и компютърни науки в
българското висше образование
За начало на обособяването на информатиката като самостоятелна научна дисциплина се приемат
30-те и 40-те години на XX в. [1]. За първи път терминът „информатика“ се използва от немския учен К.
Щайнбух през 1957 г. в статията „Информатика: автоматизирана обработка на информацията“. Във
Франция понятието информатика се въвежда от френския инженер Ф. Драйфус през 1962 г. като
съкращение на израза „information automatique“ [2]. Информатиката е наука за автоматично
обработване на информацията. Тя се занимава със събирането, систематизирането, представянето,
структурирането, анализирането, съхраняването, преобразуването и разпространяването на
информация [3]. Системното изследване и изучаване на тези информационни процеси обособява
научната област и поставя началото на обучението по информатика и компютърни науки. Прецизната
датировка е трудно да се проследи, тъй като обучението по информатика прохожда във висшето
образование като част от процеса на обучение в някои математически дисциплини. Първоначално някои
дисциплини, сред които „Теория на информацията“, „Дискретна математика“, „Теория на графите“,
„Булева алгебра“, „Криптография“ и др., са се приемали и разглеждали като математически основи на
информатиката. С разрастването на научната сфера на информатиката се появяват дисциплини като
„Формални и програмни езици“, „Алгоритми и структури от данни“, „Анализ и дизайн на алгоритми“,
„Дискретни структури и езици“, „Автомати и изчислимост“, „Бази от данни“ и др. Общо за тези учебни
курсове е разработването на подходи за формализиране на неформални информационни обекти. Този
процес на формализация на информационни обекти, подходящи за обработка от компютърна
395
технология, поставя научните и образователни основи на бъдещето учебно съдържание по
информатика.
Според източниците [4, 5] в България образователната дейност по информатика датира от началото
на 70-те години. Секторите на Единния център по математика и механика – „Основи на кибернетиката и
теория на управлението“ и „Основи на математическото осигуряване“, са първите институционални
организационни единици от тип катедра. Десетилетие по късно, през 1986 г., Факултетът по математика
и механика на Софийския университет (СУ) е преименуван на Факултет по математика и информатика
(ФМИ). През същата година е формирана и първата самостоятелна специалност „Информатика“ [6, 7].
Четири години по-късно Математическият факултет на Пловдивския университет (ПУ) също е
преименуван на Факултет по математика и информатика (ФМИ). Днес всички университети в страната
притежават факултет или катедра, които са специализирани в обучение по информатика.
Софтуерните технологии – от образователна дисциплина до образователна специалност
Ролята на информатиката да автоматизира информационни дейности, като отговоря на
обществената потребност да се обменя и обработва голям обем информация, дава силен тласък на
развитие на информационните и комуникационните технологии (ИКТ). Фундамент на това развитие е
факторът софтуерно производство – от теоретичните основи и прилагането на иновационна мисъл, през
реализацията на софтуерни проекти, до интеграцията и поддръжката на софтуерни продукти и услуги.
Тези комплексни дейности, касаещи жизнения цикъл на софтуерните разработки, най-тясно се свързват
с понятието софтуерни технологии (СТ), още назовавани с термина софтуерно инженерство (СИ).
Терминът „софтуерно инженерство“ за първи път e дискутиран през 1968 г. на конференция на НАТО,
посветена на софтуерната криза [8, 9]. В специализираната литература се срещат различни определения
за СТ. Определенията, придобили по-широка популярност, са тези на Б. Наур, 1969 г.: установяването и
използването на здрави принципи за разработване с цел по икономичен начин да се произведе софтуер,
който е надежден и функционира ефективно върху реална машина; IEEE (Institute of Electrical and
Electronics Engineers, Асоциацията на американските електронни инженери): софтуерните технологии са
систематичен подход към разработването, експлоатирането, съпровождането и изваждането от
експлоатация на софтуер; Феърли, 1984: технологична и мениджърска дисциплина, занимаваща се
систематично с производството и съпровождането на софтуерните продукти, които се разработват за
време и на основата на точно определени разходи [10, 11]. Общо за посочените по-горе определения е
синонимната употреба на глаголите „разработвам“, „експлоатирам“, „произвеждам“, т.е. създаването и
употребата на софтуер. Основна цел на СТ е ефективно разработване на качествен софтуер чрез
съчетаване на научни подходи с технологични новости, мениджърски похвати и печеливши бизнес
практики [12].
В България първият курс по СТ е четен през учебната 1984/85 г. на студенти от ФМИ на СУ. За тези
тридесет години техниките и практиките на разработване на софтуер постоянно се развиват, а
значимостта на областта в страната се е увеличавала, като от отделна дисциплина СТ са се превърнали в
основно научно, професионално (т.е. индустриално) и образователно направление на информатиката.
Днес този курс присъства в учебните планове на бакалавърските специалности на направление
„Информатика и компютърни науки“, като при един и същ хорариум се забелязват различия най-вече в
избора и задълбочеността на представяне на материала в лекциите и начина на организиране на
упражненията [13]. Нещо повече, изучаването на направлението отдавна е преминало пределите на
отделната дисциплина, като по настояще то се учи специализирано като самостоятелна бакалавърска
и/или магистърска специалност във ФМИ на СУ, ФМИ на ПУ, ФМИ на ШУ, НБУ, ТУ-София, ТУ-Варна и др.
Този процес на разширяване на обучението по СТ ще продължи и през следващите години с оглед
икономическата, социалната и управленската (т. нар. е-управление) значимост на направлението.
Еволюция на софтуерното производство
В настоящата точка представяме синтезирано динамичния процес на еволюция на принципи,
концепции, стандарти, подходи, методи, техники и практики за създаване на софтуер. Паралелно с
анализа на този процес обобщаваме и обособяваме четири йерархични софтуерни области. Целта на
обособяването на областите е да се изгради модел, чрез който се разкрива парадигмата на
разработване, реализация и интеграция на софтуер и перспективата, която тази парадигма открива пред
настоящето и бъдещо образование и обучение по информатика и софтуерни технологии. При
изграждането на модела степенуваме отделните области като абстракция и сложност, т.е. щом една
396
област е поставена по-високо в модела, то тя е съставена от градивни елементи (т.е. принципи,
концепции, стандарти и т.н.), които са с по-висока степен на абстракция по отношение на разработката
на софтуер и с по-голяма степен на сложност по отношение на софтуерните проблеми, които разрешават.
Критерии за обособяване и обобщаване на софтуерни области
При обобщаването и обособяването на областите се придържаме към следните критерии: областта
да притежава генерализиращи свойства по отношение на градивните елементи, а самите елементи, т.е.
софтуерните принципи, концепции, стандарти, подходи и т.н., бидейки част от практиката в софтуерната
индустрия, да се характеризират с масово приложение и употреба, трайност във времето и степен на
технологична независимост от софтуерни платформи и системи.
Развитие на програмирането
Софтуерните дейности, които исторически и професионално са най-развивани през последните
седем десетилетия, са: анализирането на софтуерни проблеми и програмирането на софтуерни
решения. През 50-те години на миналия век „процесите“ (моделите) за разработване на софтуер са се
състояли от тези два стадия: фаза на анализ и фаза на програмиране. С времето дейностите анализиране
и програмиране са преминали през множество концептуални и технологични промени. Това, което
прави всяко програмиране трудно, до голяма степен е мащабът. Програми, които се създават лесно за
един компютър, стават значително по-сложни, когато се пренасят през пространството (до много
потребители) и времето (да съществуват извън времето за изпълнение на единична програма) [14]. От
позицията на настоящето може да обобщим, че езиците за програмиране, създадени през втората
половина на миналия век, са оформили четири главни стила (парадигми) на програмиране:
императивен, функционален, логически и обектно-ориентиран [15]. Обектно-ориентирания стил на
програмиране се справя с нарастващата сложност на програмите и се е наложил в индустрията,
предложен е от Алан Кей, считан за баща на обектно-ориентираното програмиране (ООП) [16]. Чисто
технологичните предимства на обектно-ориентираните езици за програмиране пред останалите групи
при решаването на задачи с общо предназначение са неоспорими. Обектно-ориентираната технология
(OOТ) се е развила като средство за управление на сложността, присъщо на много различни видове
системи. ООП моделът се е доказал като мощна и обединяваща концепция [17]. В потвърждение на
констатациите говорят и данните в Таблица №1, съставена от индекса TIOBE [18] за ползваемост на
езиците съобразно стила на програмиране. Както може да видим, групата на ООП езиците заема най-
голям процентен дял, при това през последните години се запазва тенденцията този процент да
нараства. Така, въз основа на изложения анализ, отчитайки, че основните ООП подходи, техники и
практики включват дейностите анализ, дизайн и програмиране, съобразявайки се с гореописаните
критерии, първата софтуерна област, която обособяваме, наричаме: обектно-ориентирани подходи,
техники и практики за създаване на софтуер.
Таблица №1: Рейтинг на категориите програмни езици според индекса TIOBE
Категория езици
Рейтинг – май
2011
Рейтинг – май
2012
Рейтинг – май
2013
Обектно-ориентирани
57.3%
57.7%
58.2%
Процедурни
37.1%
36.6%
37.0%
Функционални
4.3%
3.9%
3.2%
Логически
1.4%
1.9%
1.7%
Развитие на софтуерните модели и методологии
Според някои автори моделите за разработване на софтуер са се зародили през 50-те и 60-те години
[19, 20], като първоначални опити за приложение са направени от софтуерни екипи на IBM през 1957-
58г. [21]. Въпреки това, в научната литература първият опит за стандартизиране на модел за
разработване на софтуер е известен от работата на Уинстън Ройс, публикувана през 1970г. [22]. В нея е
представен т.нар. каскаден модел, още известен с названието – модел водопад. Софтуерните програми
от 50-те и 60-те години са разработвани по модел „анализ-програмиране“. Той е бил сполучлив за малки
програми, но практически става неефективен и неефикасен за по-големи програми [22]. Това е довело
397
до създаването на нови модели за разработване на софтуер. Такива модели са били създадени и
развивани през 70-те, 80-те и 90-те години на миналия век. През този период моделите, по които се е
разработвал софтуер, се класифицират като последователни, прогресивни (поетапни) и итеративни [23].
С разрастване и усъвършенстване на различните модели, процесът на създаване на софтуер по
определен модел е започнал да се изследва като софтуерен процес с изграден жизнен цикъл. Моделите
на разработване на софтуер разделят процеса на разработка на ясно обособени фази, обикновено
включващи етапи като анализ, дизайн, имплементация (програмиране), тестване (проверка),
интегриране и поддръжка [24, 25]. По-известни представители за периода са модел „водопад“, V-модел,
Dual V-модел, модел „прототип“, еволюционен модел и др. Развитие на софтуерните модели като
средство за организиране на работния процес е съпътствано от постоянно създаване на нови концепции,
подходи, техники и практики за тяхното прилагане. Този прогрес на развитие с течение на времето води
до разглеждането на моделите като рамка за реализация на софтуерните процеси, а структурирането на
процеса, по който се разработва софтуерът, започва да се обсъжда в научната литература и софтуерна
практика като методология. Някои автори разглеждат този преход, като определят, че: МЕТОДОЛОГИЯ
= МОДЕЛ + ТЕХНОЛОГИЯ(И) [26]. Методологиите намират отговор на потребностите на софтуерната
индустрия през последните две десетилетия. Те се предпочитат пред традиционните софтуерни модели,
тъй като предлагат гъвкаво приложение на софтуерния процес, водещо до по-бързо и качествено
разработване на софтуер сравнено с тромавите и детайлно документирани модели. Понятието гъвкава
софтуерна методология (agile methodology), още наричана динамична, е термин, включващ множество
концепции, подходи, техники и практики за разработване на софтуер. Динамична методология е
обобщаващ термин, покриващ много процеси за създаване на софтуер, които имат общ набор от
ценности и принципи, определени от Манифест за динамична разработка на софтуер [27]. В
специализираната научна литература са разработени графики, които разкриват произхода и еволюцията
на софтуерните модели и гъвкави методологии [28, 29]. Тези графики могат да се разширят, например с
популярните: гъвкаво моделиране (ГМ) и работната рамка MSF Governance Model [30, 31]. Също така
могат да претъпят известно видоизменение в зависимост от категоризацията на бурния период на
стандартизиране на обектно-ориентираните подходи за анализ, проектиране и моделиране през 90-те
години, известен в литературата като „война на методите“ [32, 33]. Тъй или иначе, масово приложение
в софтуерната индустрия са намерили гореизброените модели и методологии. Така, въз основа на
представения анализ на развитие на моделите и методологиите за създаване на софтуер, съобразявайки
се с определените по-горе критерии, втората софтуерна област, която обособяваме, наричаме:
методологии за създаване, моделиране и прилагане на софтуерни процеси.
Управление и реализация на софтуерни проекти
Всяка работа по създаване и разработване на софтуерни приложения започва с планиране на проект,
като обикновено разработката се проектира в две перспективи концептуална и софтуерна, всяка от
които има икономически, юридически и мениджърски аспекти. В концептуалната перспектива
мениджмънтът засяга въпросите, свързани с поставянето на цели и постигане на резултати, въпроси
свързани с бюджета, времето и обхвата на проекта, екипа, който ще го реализира, ресурсите, които ще
са необходими, рисковете от провал, възвръщаемост на инвестициите и др. проблеми характерни за
изграждането на визия на реализацията. В софтуерна перспектива мениджмънтът е свързан с
организацията и управлението, с това как концептуалната перспектива да се реализира като софтуерен
процес. При нея се формулират и формализират множество от дейности и практики, определят се роли
и отговорности на участниците в проекта с цел да се организира и структурира процесът на създаване на
софтуер. При съвременните гъвкави методологии организационните и управленските подходи са
стандартизирани. Всяка съвременна методология притежава набор от ръководства за прилагане на
контрол и управление на промените, контрол и управление на рисковете, управление на итерациите и
т.н. По същество тези подходи притежават мениджърски характер, поради което софтуерният
разработчик изпълнява функции на мениджър, т.е. при работа със съвременна гъвкава методология
софтуерният разработчик освен специализираните софтуерни компетенции е необходимо да притежава
и управленски знания и умения. Гъвкавите методологии обаче не могат да покрият всички знания,
умения и компетенции за управлението на софтуерните проекти. В исторически план, много преди да са
се развили управленските решения на методологиите, са се утвърдили стандарти за управление и
контрол на проекти, по настояще обхващащи и реализирането на проекти в софтуерното инженерство.
Такива стандарти са Системата от знания за управление на проекти (СЗУП) и Интегрираният модел за
398
зрялост на възможностите (ИМЗВ). Стандартите СЗУП и ИМЗВ разполагат с планиране, за каквато пълнота
и завършеност гъвкавите методологии не могат да претендират [34]. Така например, не всички
съвременни гъвкави методологии покриват пълния жизнен цикъл на създаване на софтуер [28]. Нещо
повече, задълбоченият анализ над дейностите за ръководене на софтуерни проекти при по-известните
гъвкави методологии ни разкрива, че фокусът при тях е върху приложението на софтуерния проект като
софтуерен процес, т.е. фокусът на жизнения цикъл и работен поток е над управлението на софтуерния
процес, а не върху управлението на софтуерния проект. Макар в голяма степен да съществува
препокриване, това са две различни концепции. Проектът представлява временно начинание за
създаването на уникален продукт, услуга или резултат. Временният характер на проектите показва
определено начало и край, като краят на проекта настъпва, когато целите на проекта са постигнати или
когато проектът е прекратен [35]. При реализирането на по-големи софтуерни проекти е необходимо да
се управлява и самият софтуерен проект. Това управление е с по-голям обхват от управлението на
процеса и е по-комплексно, тъй като следи по-стриктно параметри като пазарни ниши на приложение,
възвръщаемост на инвестициите, административна и правна съгласуваност и пр. норми ведно с
технологичния напредък на разработката. Различието между планирането при проектите и процесите
може да се изрази чрез съпоставянето на техните концепции за управление, а също така чрез
съпоставянето им с концепцията за т. нар. управление на бизнес процеси. Този въпрос е разгледан в
изследването [36] като сравнителен анализ между четири гъвкави методологии и два стандарта за
управление на проекти. Изследвана е степента на съответствие въз основа на пет променливи величини:
обхват, качество, график, бюджет и специфики. Резултатите в проучването сочат, че приблизително 85-
95% от аспектите на величините обхват, качество, график, бюджет и специфики при стандартите могат
напълно или частично да бъдат покрити от методологиите, като съпоставката е валидна както за всяка
една променлива, така и за цялостния жизнен цикъл на проекта. Ясно е, че планирането при стандартите
за управление на софтуерните проекти е с по-голям обхват и комплекс от дейности, сравнено с
управленските подходи при гъвкавите методологии. Въпреки че разликата не е голяма и в отделни
случаи не е съществена, от гледна точка на образователния процес първите притежават съществено
предимство изразено с пълна степен на технологична независимост на управление на процеси и
дейности. Поради тези причини обособяваме управлението и реализацията на софтуерни проекти като
отделна софтуерна област в модела.
Перспективи пред образованието и обучението по информатика и софтуерни технологии
В предходната точка анализирахме обособяването на три софтуерни области. Тяхното обособяване
обаче не е в резултат единствено на представения по-горе анализ, а е в следствие на двегодишно
задълбочено изследване над проблематиката „Основи на теория на методика на обучението по
софтуерни технологии“. Така например в анализа не са включени, но са взети под внимание, мненията,
позициите, становищата и препоръките от интервюирането на 30 авторитета за страната, в това число
софтуерни разработчици, изследователи и преподаватели. Също така, отчетено е, от една страна,
историческото развитие на обучението по информатика и софтуерни технологии в България, а от друга
страна, тяхното състояние за учебната 2013/2014г. въз основа на анализ на 484 учебни програми за
специалности „Информатика“ и „Софтуерни технологии“ [37]. Както може да се проследи, учебното
съдържание на обучението по информатика и софтуерни технологии се изменя почти изцяло през
приблизително 10-15 години. Поради тази причина разглеждаме въпроса за перспективата пред
обучението по информатика и софтуерни технологии на ниво учебен план, като разкриваме парадигма
на софтуерното производство чрез изграждането на модел от софтуерни области (виж фиг. 1).
Изграждането на модела обединява научното познание за развитието на софтуерното производство,
състоянието на обучението в професионалното направление и специализираната компетентност на
разработчици, изследователи и преподаватели, като обособява областите, от които е съставен въз
основа на критериите за масовост, трайност и технологична независимост на софтуерни концепции,
принципи, подходи, техники, практики и т.н. Предвид, че се цели да се представи образователната
перспектива на обучението към трите области в модела, е добавена и четвърта област, наречена
„Софтуерни практики“. Четирите области са представени йерархично на нива, разкриващи степени на
абстракцията и сложността на разрешаване на софтуерни проблеми. Казахме, че чрез йерархията на
областите в модела представяме образователната перспектива на обучението по информатика и
софтуерни технологии на ниво образователен учебен план, но трябва да уточним, че в допълнение на
представената перспектива е необходимо да се разгледа въпросът за декомпозирането на софтуерните
399
области от ниво учебен план на ниво учебна програма с цел изготвяне на учебно съдържание. Този
проблем развиваме в отделна публикация, тъй като в общия си вид така представеният модел
представлява една от компонентите на „Общ йерархичен интеграционен модел за структуриране,
разпределяне, формализиране, адаптиране и актуализиране на тематично учебно съдържание,
подходи, методи и средства на обучение, разгърнат като технологични области от знания за сферата на
софтуерното инженерство“.
Фигура 1. Йерархичен модел на парадигма на разработване, реализация и интегриране на софтуер
Заключение
В работата проследихме развитието на обучението по информатика и софтуерни технологии в
България, изследвахме развитието при програмирането, софтуерните модели и методологии и
съпоставихме последните със стандартите за управление на проекти. В следствие на задълбочен анализ
изградихме модел на парадигма на софтуерното производство, съставен от четири софтуерни области.
В заключение, откривайки перспективите пред обучението по информатика и софтуерни технологии
чрез представения на Фиг. 1 модел, трябва да отчетем, че към учебната 2013/2014г. във водещите
университети на страната не е забелязано да се провежда обучение по управление и реализация на
софтуерни проекти, а управленски подходи за реализация на софтуерни проекти при гъвкави
методологии на разработване на софтуер се изучават в едва няколко теми на четири дисциплини от
общо 484 изследвани учебни програми [37]. Затова повдигаме и оставяме отворени за обсъждане
въпросите: Как областите „Управления и реализация на софтуерни проекти“ и „Методологии за
създаване, моделиране и приложение на софтуерни процеси“ да се адаптират за целите на
образованието и интегрират в учебния план и програма?; С каква интензивност да се изучават?; В какъв
етап от курса на обучение?; и пр. предстоящи за разрешаване образователни проблеми на обучението
в професионално направление „Информатика и компютърни науки“.
Литература:
1. Манев, К., Н., Манева, Информатика 9. клас, С., Анубис, 2001.
2. Тодоров, Ю., Информатика и количествени методи за историци, С., 2011г., електронно издание:
http://www.clio.uni-sofia.bg/todorov/II&C.pdf.
3. Бърнев, П., Г.,Тотков, Р., Донева, В., Шкуртов, К., Гъров, Информатика + 9. клас, Пловдив, Летера,
2001.
4. 60 години БАН-ИМИ основан 1947, С., БАН, 2007.
5. Стоименова, В., Обучението по вероятности и статистика за педагогическите специалности във
ФМИ при СУ „Св. Климент Охридски“, Доклади на Четиридесет и втора Пролетна конференция
на СМБ, Боровец, 2-6 април, 2013., стр. 437-446.
6. Замфиров, М. Анализ на интересите на кандидат-студентите във ФМИ при СУ „Св. Климент
Охридски“ 2005 – 2013 г., сп. Българска Наука, бр. 57, май 2013., стр. 27.
7. Великова, Е., Нишева, М. Обучението във ФМИ – единство на традиция и новаторство, Доклади
на XXXVIII Пролетна конференция на СМБ, Боровец, 1-5 април, 2009, стр. 13-22.
8. Sommerville, I., Software Engineering: Seventh Edition,Addison Wesley, 2005, p.26.
9. Naur, P., B. Randell, (Eds.). Software Engineering: Report of a conference sponsored by the NATO
Science Committee, Garmisch, Germany, 7-11 Oct. 1968, Brussels, Scientific Affairs Division, NATO
(1969) pp. 231.
400
10. Манева, Н., Ескенази, А. Софтуерни технологии, Анубис, София, 2001 г.
11. Laplante, Р. What Every Engineer Should Know about Software Engineering, CRC Press, April 25, 2007.
12. Манева, Н. Човешкият фактор в софтуерното производство: спасение или бедствие. [Сборник
доклади на Национална конференция „Образованието в информационното общество“],
Пловдив, АРИО, 27-28 май 2010, стр. 69-78.
13. Манева, Н. Обучението по софтуерни технологии: очаквания за криза или криза на очакванията
[Сборник доклади на Национална конференция „Образованието в информационното
общество“], Пловдив, АРИО, 26-27 май 2011, стр. 54-63.
14. Пърсънс, Д. Динамични уеб приложения с XML и Java, Дуо Дизайн, 2010.
15. N"rmarks, K. Functional Programming in Scheme – with web programming examples, Department of
Computer Science, Aalborg University, web-textbook, септември 2003, http://people.cs.aau.
dk/~normark/prog3-03/pdf/all.pdf.
16. Eckel, B. Thinking in Java 4th ed., US, NJ. Prentice Hall Inc, 2006.
17. Booch, G., R., Maksimchuk, M., Engle, B., Young, J., Conallen, K., Houston, Object-Oriented Analysis and
Design with Applications Third Edition, Pearson Education Inc, 2007.
18. Официален сайт: TIOBE Software, http://www.tiobe.com, посл. посещение 10.09.2014г.
19. B. Randell and F.W. Zurcher, „Iterative Multi-Level Modeling: A Methodology for Computer System
Design,“ Proc. IFIP, IEEE CS Press, 1968, pp. 867-871.
20. Lehman M.M., Process models, process programs, programming support, Proceedings of the 9th
international conference on Software Engineering, Monterey, California, United States, March 1987,
p.14-16.
21. Larman, C., V., Basili, Iterative and incremental development: A brief history, IEEE Software, vol. 20
4756, 2003.
22. Royce, W., Managing the Development of Large Software Systems, WESCON ‘70, 1970, reprinted in 9th
International Conference on Software Engineering, Washington, D.C.: IEEE Computer Society Press,
1987, pp. 328-338.
23. Zhang, X.,T., Hu, H., Dai, X., Li, 2010. Software Development Methodologies, Trends and Implications:
A Testing Centric View. Information Technology Journal, vol. 9 (8), 1747-1753.
24. McKeen, J.D. 1983. Successful Development Strategies for Business Application Systems, MIS Quarterly,
vol. 7, No. 3, 47-65.
25. Robey, D., R., Welke, D., Turk, Traditional, iterative, and component-based development: A social
analysis of software development paradigms. Inform. Technol. Manage., 2001., 2: 53-70.
26. Sorensen, R., A Comparison of Software Development Methodologies Reed, Software Technology
Support Center, 1995.
27. Официален сайт на MASD, http://agilemanifesto.org/, посл. посещение на 14.04.2012.
28. Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2002). Agile software development methods
review and analysis. VTT Publications(478), 3-107.
29. Кръстева, И., Гъвкава методология за разработка на софтуерни приложения. [Автореферат на
дисертационен труд за присъждане на образователна и научна степен „доктор“, научна
специалност 01.01.12.“Информатика“], София, 2011.
30. Официален сайт на: Microsoft Developer Network, https://msdn.microsoft.com/en-
us/library/jj161047.aspx, посл. посещение на 7.05.2014г.
31. Официален сайт на: Microsoft MSDN for Visual Studio,
http://msdn.microsoft.com/library/vstudio/dd380647.aspx, посл. посещение на 07.05.2014г.
32. Фаулър, М., UML основи, София: СофтПрес ООД, 2004, стр.35-36.
33. Palmer, P., Barker, W. Beginning C# 2008 Objects: From Concept to Code, Apress, 2008, p.241
34. Fitsilis, P., Comparing PMBOK and Agile Project Management Software Development Processes,
Advances in Computer and Information Sciences and Engineering, Springer Science Business Media
B.V., ISBN 9781-4020-8740-0, 2008.
35. Project Management Institute, A Guide to the Project Management Body of Knowledge (PMBOK®
Guide), 4th Edition, ISBN 978-1-933890-51-7, 2008.
36. Тодоров, Н. Гъвкави методологии за разработка на софтуерни проекти и тяхното приложение,
основано на утвърдени стандарти за управление и качество, Автореферат на дисертационен труд
401
за присъждане на образователна и научна степен „доктор“, научна специалност
01.01.12.“Информатика“, БАН-ИМИ, София, 2013.
37. Христов, Хр., Крушков, Хр., Състояние на обучението по информатика и софтуерни технологии,
списание „Образование и технологии“, бр. 6, 2015.
ResearchGate has not been able to resolve any citations for this publication.
Article
Full-text available
Agile - denoting "the quality of being agile; readiness for motion; nimbleness, activity, dexterity in motion" - software development methods are attempting to offer an answer to the eager business community asking for lighter weight along with faster and nimbler software development processes. This is especially the case with the rapidly growing and volatile Internet software industry as well as for the emerging mobile application environment. The new agile methods have evoked a substantial amount of literature and debates. However, academic research on the subject is still scarce, as most of existing publications are written by practitioners or consultants. The aim of this publication is to begin filling this gap by systematically reviewing the existing literature on agile software development methodologies. This publication has three purposes. First, it proposes a definition and a classification of agile software development approaches. Second, it analyses ten software development methods that can be characterized as being "agile" against the defined criteria. Third, it compares these methods and highlights their similarities and differences. Based on this analysis, future research needs are identified and discussed.
Conference Paper
Full-text available
The paper presents a method of modelling a computer system design as it evolves, so that evaluation can be made an integral part of the design process. The paper introduces the concept of concurrent existence, within a single model, of several representations of the system being modelled, at differing levels of abstraction. Thus important design decisions are expressed directly in terms of appropriately abstract quantities, facilitating understanding, validation, and modification of the system design. The paper includes brief details of an experimental implementation of the modelling technique and of the use of the technique to model both hardware and software components of a multi-processing system.
Conference Paper
Full-text available
The objective of this article is to compare a generic set of project management processes as defined in Project Management Body of Knowledge (PMBOK) with a number of agile project management processes. PMBOK is developed by Project Management Institute and it is structured around five process groups (initiating, planning, execution, controlling and closure) and nine knowledge areas (integration management, scope management, time management, cost management, quality management, human resource management, communication management, risk management, procurement management). On the other hand, agile software project management is based on the following principles: embrace change, focus on customer value, deliver part of functionality incrementally, collaborate, reflect and learn continuously. The purpose of this comparison is to identify gaps, differences, discrepancies etc. The result is that, agile project management methodologies cannot be considered complete, from the traditional project management point of view, since a number of processes either are missing or not described explicitly.
Book
Do you… Use a computer to perform analysis or simulations in your daily work? Write short scripts or record macros to perform repetitive tasks? Need to integrate off-the-shelf software into your systems or require multiple applications to work together? Find yourself spending too much time working the kinks out of your code? Work with software engineers on a regular basis but have difficulty communicating or collaborating? If any of these sound familiar, then you may need a quick primer in the principles of software engineering. Nearly every engineer, regardless of field, will need to develop some form of software during their career. Without exposure to the challenges, processes, and limitations of software engineering, developing software can be a burdensome and inefficient chore. In What Every Engineer Should Know about Software Engineering, Phillip Laplante introduces the profession of software engineering along with a practical approach to understanding, designing, and building sound software based on solid principles. Using a unique question-and-answer format, this book addresses the issues and misperceptions that engineers need to understand in order to successfully work with software engineers, develop specifications for quality software, and learn the basics of the most common programming languages, development approaches, and paradigms.
Article
In a field study of thirty-two business application systems, the relationship between the time spent in various phases of the development life cycle and the outcome of the development was examined. Results indicate that systems which spent more time in the analysis phase required less time to code, resulted in greater user satisfaction, and were developed in agreement with established budgets and deadlines. These results suggest preferred strategies for the development of application systems and have implications for their successful management and control.
Article
Information systems have always been developed through social processes, wherein actors playing a variety of specialized roles interact to produce new business applications of information technology. As systems development practices continue to evolve, an ongoing assessment of their social implications is required. This paper develops a framework for understanding the potential social implications of an emerging, component-based development paradigm. Like two alternative paradigms for systems development, the traditional life-cycle and the iterative-incremental paradigms, the new component-based paradigm requires that certain generic roles be performed to build a desired application. For each paradigm, we identify the actors who play different roles, specify the nature of their interdependence, and indicate the requirements for managing conflicts constructively. The framework may guide research into the social dynamics of system development and serve as a tentative guide to the management of information systems development.
Conference Paper
One way of responding to a keynote speaker is to put the expressed views into context, pointing to highlights in the address, suggesting areas where alternative viewpoints might have been presented, exposing any chinks in the armour of the otherwise solid structure erected by the speaker.Logistics have made it impossible for this respondent to see the paper to be presented to ICSE9 by Professor L Osterweil before generating his own written response,. The above approach cannot, therefore, be taken. Instead, I raise a fundamental issue that follows from a comparison of the respective approaches to process modelling taken by Osterweil and myself. What is expressed here reflects my current understanding of his views on Process Programs and Process Programming, my reaction to what I believe he will present. I can only hope that this will not do too much violence to views to be expressed in his Proceedings paper or in the Keynote lecture itself.To set the scene and to provide a basis and framework for discussion, let me first summarize my view of studies of the software development process in terms of my own involvement in them.f To the best of my knowledge, the first such study was a 1956 paper by Benington [BEN56]. In this, a process model with basic characteristics of that subsequently termed the 'Waterfall Model', was first presented. Current interest in the software development process makes it most appropriate that this historic paper is to re-presented at this conference. In 1968/9, totally unaware of the earlier paper, I engaged in a study whose conclusions were presented in a confidential report entitled 'The Programming Process' [LEH69]. This has now become available in the open literature [LEH85, chapter 3] and is, I believe, as relevant today as at the time it was written. It was this study and the continuing research it triggered that subsequently led my colleagues and me to the concepts of process models, evolution dynamics, program evolution and support environments.Our earliest process models reflected the dynamics of the process [LEH85, chs. 5-9, 14, 16, 19]. By the mid 70's, at about the time that Barry Boehm [BOE76] popularized the Waterfall model first proposed by Royce [ROY70], my studies had led to a search for better understanding of the total process of software development. This total process was seen as extending from initial verbalization of the problem to be solved or computer application to be implemented, through delivery of the product and over its subsequent evolution. The search was expressed through the development and refinement of a sequence of Process Models [LEH85 chs. 3, 7, 14, 20, 21, 2]. It was directed towards first formulating a model of an ideal process ('ideal' though unachievable in the sense of the 'ideal' cycle of thermodynamics). Such a model would constitute a general paradigm. A practical process would be obtained by instantiation in terms of relevant concepts, available technologies, specific implementation environments, process constraints and so on. This development of process models culminated in the LST model [LEH84] and its subsequent analysis and application as presented at the first two Process Workshops [SPW84, 86]. The importance of that model is not only in the process it depicts. It is a canonical model of software development and of development steps.What has all this to do with process programs? Process programs, as described by Osterweil, are also process models. They are models constructed from linguistic elements expressed and structured in programmatic form. They are intended to define a procedure for achieving some desired end from an initial starting point and are expressed in terms of expressions in a natural or formal language. The procedure is implemented by executing the primitive actions named in the program. A process program to describe a process that, if followed, will permit execution of some specific task in its environment, can be systematically developed, top-down, in a manner equivalent to top-down development of a procedural program. The Osterweil approach is essentially equivalent, in the context of process modelling, to the use of procedural programming (in contrast to styles such as functional, imperative and so on). Its power is defined by the properties of the language used in relation to available execution mechanisms. In fact, a process program is precisely that - a procedural program whose value depends on the constructability of a mechanism that can execute it mechanically, human intervention being restricted primarily to the provision of information. This is a view that Osterweil will not dispute; in the papers that I have seen the algorithmic nature of process programs is repeatedly stressed.And therein lies the rub. The approach is fine, almost certainly useful, when comprehensive models of the phenomenon, the domain and the system that are the subject of the program are known and understood, when strategies and algorithms for achieving the desired ends are known a priori, when computational, managerial and administrative practices are fully defined. It is useless, indeed meaningless, if such phenomenological and algorithmic models do not exist [TUR86], if progress in definition (and execution) of the process is a function of the process itself.