Дисциплини

10 Технология на програмирането

Седмичен хорариум 2+0+2
Форма на контрол Изпит

Анотация


Дисциплината “Технология на програмирането” е една от най-новите дисциплини, свързани с разработването на софтуер. На английски дисциплината е известна под името Software Engineering, словосъчетание което няма точен превод на български език. Въведено е от Наур на една конференция на НАТО през 1969г и е свързано с появилата се тогава «софтурната криза». Според IEEE (Institute of Electrical and Electronics Engineers) тази дисциплина се свързва с прилагане на добре познатите инженерни принципи в областта на разработването на софтуер. Дисциплината се явява логическо обобщение на натрупаните знания и практически опит за програмиране от предния семестър, логическо допълнение към дисциплините “Синтез и анализ на алгоритми”,” Обектно ориентирано програмиране”,” Програмни езици и технологии в Интернет” и др.
Основната цел на дисциплината е обединяване на досега получените знания в единна система, обхващаща целия жизнен цикъл на софтуера, посредством използване на съвременна интегрирана среда за разработка на Windows Form приложения и работа в екип. За целта, Visual Studio.Net и C# са избраните среда и език за разработка на проектите по време на лабораторни упражнения.
Дисциплината е свързана с редица следващи дисциплини в магистърския курс на обучение, такива като “Приложно програмиране със C# и Visual Studio.Net”, “Разпределени приложения със C# и Visual Studio.Net, “Софтуерни шаблони за проектиране”, курсово и дипломно проектиране.

Съдържание


Тема 1. Софтуерни Технологии (Software Engineering) – основни понятия. Жизнен цикъл на програмното осигуряване. Модели на ЖЦ
1.1. Понятието “Software Engineering” – определение и превод.Значение на дисциплината Софтуерни Технологии.
1.2. Жизнен цикъл на програмното осигуряване. Модели на жизнения цикъл. Класификация на моделите. Пълни Едномерни Модели. Пълни Многомерни Модели. Частични Модели.
1.3. Пълен еволюционен модел. Пълен спирален модел. V-образен модел. Унифициран процес за разработване на софтуер (Unified Software Development Process).
Тема 2. Пoдxoдu (технологии) за разработване на софтуер.
2.1. Подходи за разработване на софтуер – препоставки за създаване. Изисквания към съвременните подходи (технологии) за разработване на софтуер.
2.2. Неструктурно програмиране (Unstructured Programming). Процедурен подход за разработка на софтуер. Модулно програмиране (Modular programming). Стратегии Top-down и bottom-up. Парадигми: структурна и обектно-ориентирана. Обектно-събитийната парадигма (ОСП).
Тема 3. Съвременни технологии за разработване на софтуер
3.1. Технологии за „Ускорено разработване”: Гъвкави технологии (Extreme programming - XP), Разработване с прототипиране, Разработване с участието на потребителите;
3.2. Технологии за „Разработване с мултиплициране”: Re-use подход, Компонентно програмиране;
3.3. Технологии за „Разработване на надежден софтуер”: Разработване на софтуер с минимизиране на дефектите - fault-free и fault avoidance (Cleanroom SE), Разработване на софтуер с приемливо ниво на грешки - fault tolerance, Защитно програмиране.
Тема 4. Спецификация на изискванията към софтуера
4.1. “Изискване към софтуера” (Software Requirement) – същност, двойственост на понятието, видове изисквания.
4.2. Спецификация на изискванията към софтуера (SRS) – място в ЖЦ, съдържание, стандарти, потребители.
4.3. Средства и подходи (на Yourdon/De Marco и Gane-Sarson, SADT, UML подход) за специфициране на изискванията: естествен език, структуриран естествен език (псевдокод, Form-based specifications, таблици на решенията), графични средства (DFD, STD, ERD, CRC карти, UML диаграми и др.), формални спецификации.
Тема 5. Настройване и тестване на ПО
5.1. Видове грешки. Източници на грешките.
5.2. Основни дейности за откриване и отстраняване на грешки.
5.3. Локализиране на грешките и общи насоки за настройка на програмите. Тестване на софтуер: цел и аксиоми. Методи за тестване. Класификации.
5.4. Автоматизиране на дейностите настройване и тестване.
Тема 6. Съпровождане и Документиране на софтуер
6.1. Същност и осъществяване на съпровождането.
6.2. Управление на софтуерните конфигурации. Управление на внасянето на изменения.
6.3. Разходи и цена на съпровождането. Автоматизирани средства, подпомагащи съпровождането. Документиране на софтуер.
Тема 7. Човешкият фактор в софтуерното производство
7.1. Организация на работния колектив (Group organisation) и взаимодействие в него. За размера и състава на групата. За сплотеност (сработване) на групата (Group cohesiveness). За избора на ръководител на група (мениджър) при организация „Chief programmer teams”. За комуникациите в групата (Group communications). Организиране на сбирки и заседания на групата.
7.2. Ергономика.
7.3. Професионализъм и етично поведение.
Тема 8. Качество на софтуера
8.1. Общи понятия.
8.2. Модели на качеството на софтуера: Модел на Боем, Типичен йерархичен модел (същност. определяне стойностите на оценъчните елементи. процедура по оценяване на качеството според йерархичния модел. оценка на модела и метода), Класификационен модел - основна идея. математическа основа. алгоритми за класификация
Тема 9. Софтуерни метрики. Метрики на качеството на програмното осигуряване
9.1. Измерването в софтуерното производство – структурен модел, основни понятия, скала за измерване;
9.2. Класификации на софтуерните метрики;
9.3. Примери за софтуерни метрики (Метрика за размера на програма (LOC), Метрика на Маккейб за структурна сложност, Метрика на Холстед за текстуална сложност, Метрика за функционална плътност, Метрика на Рехенберг за технологична сложност, Метрика на Джилб за логическа сложност, Метрика на граничните стойности, Метрика, базирана на обръщенията към глобалните променливи в програмата, Метрика на Чепин за характера на използваните променливи, Метрика за стилистика и разбираемост на програмата);
9.4. Методологични проблеми на използването на софтуерните метрики
Тема 10.Цена на софтуера
10.1. Необходимост и цели. Критерии.
10.2. Моделът на Боем СОСОМО.
10.3. Метод на функционалните точки. Други модели.
Тема 11.Автоматизирани средства за разработка на програмно осигуряване
11.1. Въведение. Класификация на CASE-средствата. Интегрирани CASE среди.
Тема 12.Управление на организацията
12.1. Мениджърски подход в софтуерното производство. Управление на софтуерни проекти: методология на управлението и управленска структура на организация. Фирмено планиране.
12.2. Управление на риска: идентифициране и анализ на риска; планиране на действия за преодоляване на риска; следене и контролиране на риска.
12.3. Съставяне на графици. Препоръчителни мениджърски практики.