Въведение в Софтуерното Инженерство

Програмиране и програмни езици Софтуерно инженерство Презентация

Слайд 1

СОФТУЕРНО
ИНЖЕНЕРСТВО
ВЪВЕДЕНИЕ В СОФТУЕРНОТО ИНЖЕНЕРСТВО

Слайд 2

ЦЕЛ
“Софтуерното инженерство” е комплексна дисциплина, която има за цел да запознае студентите както теоретически, така и практически с основните подходи за проектиране, реализиране, тестване и документиране на софтуерни проекти.

Слайд 3

ИЗПИТ
ПРИСЪСТВИЯ
ОСВОБОЖДАВАНЕ
За присъствие на лекции и упражнения се дават бонус точки, които се отчитат в общата формула за освобождаване от изпит.

Работата в упражненията и курсовата задача се оценяват и вземат в предвид при освобождаване от изпит.

Предвиждат се два тестови контрола за освобождаване от изпит.

ОБЩИ УКАЗАНИЯ

Слайд 4

ТЕМИ
Модели на софтуерни процеси
Каскаден модел (waterfall). Спираловиден модел. V-образен модел.
Модели на бърза разработка (Rapid Application Development - RAD)
Гъвкави методологии (Agile, Scrum, Екстремно програмиране, Kanban).

Въведение в Софтуерното инженерство
Дефиниция за софтуер и софтуерно инженерство. Основни категории софтуер. Етапи на софтуерния процес (жизнен цикъл).
Управление на проекти
Основи на управлението на проекти. Инициализация и планиране на проекта.
Организационни подходи. Управление на риска.
Осигуряване на качеството и стандартите. Спецификация на изискванията.

Слайд 5

ТЕМИ
Реализация на софтуерния проект
Ефективност на програмите. Стил на програмиране. Статични и динамични библиотеки. Шаблони.
Методи на достъп до данните. Интегрирани среди за програмиране. Взаимодействие на приложния софтуер с други програмни приложения и системи. Ориентирано към услуги софтуерно инженерство.
Синхронизиране и автоматична актуализация на софтуер.

Проектиране на софтуер
Езици за моделиране. Видове диаграми. Изисквания, технически анализ, концепция. Класификация на програмните езици. Архитектура на приложението. Модулно, компонентно и обектно-ориентирано проектиране. Проектиране на графичен потребителски интерфейс.
Тестване
Основи на управление на качеството. Проектиране на тестове и техники за тяхната реализация.

Управление на регистрираните несъответствия. Подобряване на качеството в софтуерните проекти.
Документиране

Основни документи. Структура и принципи за изготвяне на техническа документация.

Помощна документация.

Слайд 6

ЛИТЕРАТУРА
Sommerville Ian, Software Engineering, Addison-Wesley, 2010
Bass Л., P. Clements, R. Kazman, Software Architecture in Practice, Addison-Wesley, 2013
Pressman Roger S., Software Engineering : A Practitioner's Approach, McGraw Hill, 2005
Илиева С., В. Лилов, И. Манова, Подходи и методи за реализация на софтуерни системи, СУ “Кл. Охридски”, 2010
McConnell Steve , Code Complete, 2nd Edition, Microsoft Press, 2004
Наков С., Курсове на Софтуерна академия на Телерик

Слайд 7

СОФТУЕРЕН ИНЖЕНЕР
Софтуерният инженер прилага изборно теоретичните знания, методи и средства. Специалистите-софтуерни инженери много често работят в условията на организационни, финансови и времеви ограничения на сключените договори. Те търсят решение на поставената задача, отчитайки клаузите на договора.

В най-общия случай инженерите са тези специалисти, които изпълняват практическа работа (следователно тук се има предвид по-широко тълкуване на понятието инженер, а не само в неговия по-тесен, “технически“ аспект).
Софтуерният инженер е човек, който прилага системен подход за анализирането, проектирането, създаването, тестването, оценката, поддръжката и преработката на софтуерните проекти.

Слайд 8

СОФТУЕРЕН ИНЖЕНЕР
Специалистите по софтуер адаптират съществуващите методи за инженеринг на софтуера към решението на своите задачи и това често пъти се оказва най-ефективният начин за създаване на качествен краен продукт.
Софтуерният инженер може да специализира като програмист, бизнес аналитик, системен архитект, мениджър на проекта (project manager), developer, софтуерен тестер (Quality Assurance - QAспециалист) и т.н.
Обикновенно тези роли са преплетени. Един съвременен софтуерен специалист трябва да разбира от гореспоменатите дейности.

Слайд 9

СОФТУЕРЕН ИНЖЕНЕР
Класация за търсенето на софтуерни инженери в България (SV Index, юни 2013)

Слайд 10

KAKВО е
СОФТУЕРНО ИНЖЕНЕРСТВО?
Софтуерното инженерство не е само ПРОГРАМИРАНЕ. Програмирането е само 10-20% от целия софтуерен процес.

Софтуерното инженерство е цялостен системен подход за анализиране, проектиране, създаване, тестване и поддържане на софтуерни проекти с използване на различни методи и инструменти за професионална разработка.

Слайд 11

KAKВО е
СОФТУЕРНО ИНЖЕНЕРСТВО?
The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software, that is, the application of engineering to software.

Според дефиницията на IEEE: Софтуерно инженерство е прилагането на систематичен, дисциплиниран и количествен подход към разработването, оперирането и поддръжката на софтуер, или най-общо казано – използване на инженерен подход за разработка на софтуер.

Слайд 12

ИЗИСКВАНИЯ
->
РЕАЛЕН ПРОДУКТ
Софтуерното инженерство обхваща всички аспекти на създаването на програмно осигуряване - от началния стадий на дефиниране на изискванията през неговото разработване и реално използване.

Слайд 13

ДЕФИНИЦИЯ ЗА СОФТУЕР
Според дефиницията на IEEE софтуерът се състои от инструкции, структури от данни и документация. Софтуерът не е само компютърна програма. Към всяка една компютърна програма са асоциирани документация като изисквания, проектни модели, ръководства за потребителя и др.

Софтуерът, който е предназначен да се продава на клиент се нарича „софтуерен продукт“.

Слайд 14

ОСНОВНИ КАТЕГОРИИ СОФТУЕР
Системен софтуер - съвкупност от програми, които са предназначени за обслужване на други програми. Системният софтуер се характеризира с интензивна комуникация с хардуера, интензивно използване от много потребители, съвместно използване на ресурси и сложно управление на процеси, сложни структури от данни и многобройни външни интерфейси. Примери за системен софтуер са операционни системи, драйвъри за устройства, компилатори, програмни средства, асемблери и др.

Приложен софтуер - самостоятелни програми, които решават специфична нужда на бизнеса. Приложенията в тази категории обработват бизнес или технически данни, така че да улеснят бизнес операциите или вземането на технически/управленски решения.

Слайд 15

ОСНОВНИ КАТЕГОРИИ СОФТУЕР
Вграден софтуер – намира се в дадена система и се използва за реализиране и управление на определени функции вместо крайния потребител или системата.

Наследен софтуер (Legacy software) - софтуер, който е разработен преди няколко десетилетия и продължава да се използва, като непрекъснато е бил променян, за да задоволи промени в бизнес изискванията и плат­формите (хардуерни и софтуерни).

Софтуер с отворен код - софтуер, чийто изходен код е публично достъпен за преглед и редактиране и отговаря на следните правила: свободно разпространение; първичният код трябва да бъде включен в оригиналния си вид без да бъде променян и др.

Слайд 16

ОСНОВНИ КАТЕГОРИИ СОФТУЕР
Уеб софтуер – покрива широк спектър от софтуерни приложе­ния.
Основни характеристики:
- Работят в мрежова среда;
- Обикновено са многослойни;
- Ориентирани са към голям брой потребители;
- Едновременен достъп на голям брой едновременни връзки;
- Непредвидима моментна натовареност;
- Трябва да реагират бързо на потребителско действие - уеб прило­женията трябва да имат лек и бърз интерфейс;
- Отказоустойчивост - уеб приложението да бъде достъпно непре­къснато и промените по него да не изискват спиране;

Слайд 17

ОСНОВНИ КАТЕГОРИИ СОФТУЕР

Уеб софтуер
Основни характеристики:
- Типичното уеб приложение не използва твърде сложни алгоритмични структури, а по-скоро реализира ефективен интерфейс за достъп до данни;
- Продължават да се развиват след внедряването – според изследвания 80% от работата по едно приложение се осъществява след внедряването му;
- Определено ниво на сигурност - осигуряването на адекватно ниво на сигурност е особено важно.

Слайд 18

СОФТУЕРНИ МЕТОДИ

Софтуерният метод представлява структуриран подход към разработването на софтуер, чиято цел е да улесни създаването на рентабилен софтуер с високо качество. Методите отговарят на въпроса КАК технически да се изгради софтуерът.

Първите методи на софтуерното инженерство се по­явяват през 70-те години и са предимно функционално ориентирани, а впоследствие през 80-те и 90-те години те се допълват с обектно ориен­тирани методи. Всичките съществуващи методи се основават на идеята за разработване на модели на система, които могат да се представят графично, и използване на тези модели като описание (спецификация или дизайн) на системата.

Слайд 19

СОФТУЕРНИ СРЕДСТВА

Софтуерните средства (software tools) осигуряват автоматична или полуавтоматична поддръжка на софтуерните процеси и методи.

Софтуерните средства могат да са както самостоятелни, така и интегрирани в обща среда - CASE технология.
CASE (Computer-Aided Software Engineering) – това е система, поддържаща разработката на софтуер, която е изградена на базата на интегриране на отделни средства.
Upper-CASE средства - поддържат началните фази - анализ и проектиране;
Lower-CASE средства - поддържат фазите на реализация и тестване.

Слайд 20

СОФТУЕРЕН ПРОЦЕС
Процесът е последователност от свързани дейности, ограничения и ресурси, които осигуряват постигането на някакъв вид резултат. Понятието софтуерен процес може да се разглежда като множество от тясно свързани принципи, организационни структури, технологии, процедури и артефакти. Всички те са необходими, за да се формулира, разработи, внедри и поддържа софтуерен продукт.
ХАРАКТЕРИСТИКИ:
- Процесът представлява последователност от дейности;
- Процесът може да бъде съставен от подпроцеси с йерархии и връзки между тях;
- Всяка дейност има входни и изходни критерии;
- За всяка дейност е възможно да има ограничения (ресурси, време и др.)

Слайд 21

СОФТУЕРЕН ПРОЦЕС

ОСНОВНИ ЕТАПИ:
- Дефиниране и анализиране на изискванията (5 %)
- Планиране и проектиране (10%)
- Конструиране на кода (15%)
- Тестване (20 %)
- Внедряване и поддръжка (50%)

Това са дейности, които под една или друга форма съществуват във всеки един софтуерен проект, т.н Software Project Management. Не е задължително да се изпълняват точно една след друга.

Познаването на процесите на софтуерното инженерство е важен елемент от изграждането на всеки един софтуерен инженер.

Слайд 22

ЖИЗНЕН ЦИКЪЛ
ИДЕЯ - > РАЗРАБОТКА -> ПРОДУКТ

НА СОФТУЕРНИЯ ПРОЦЕС
Жизненият цикъл дефинира принципите и насоките, според които отделните етапи трябва да се изпълняват/осъществяват.

Жизн

Преглед на началото - целият файл след изтегляне

Описание

Лекция 1. Въведение

0 коментара

Все още няма коментари. Бъдете първият, който ще коментира.

За да коментирате, трябва да сте влезли в профила си.

Влезте