Advertisement
Guest User

usi

a guest
Nov 13th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 90.03 KB | None | 0 0
  1. ЕН, 2018/2019 1
  2. Увод в софтуерното инженерство
  3. I. Софтуер
  4. 1. Какво е софтуер?
  5. • Инструкции (компютърни програми), които при изпълнение осигуряват желаните
  6. характеристики, функциониране и производителност.
  7. • Структури от данни, които дават възможност на програмите адекватно да манипулират
  8. информация.
  9. • Документи, които описват работата и използването на програмите.
  10. • Софтуерните инженери създават софтуера и виртуално всички хора го използват – директно или
  11. индиректно.
  12. • Важен е, защото засяга почти всеки аспект на нашия живот и става всепроникващ (pervasive) - в
  13. търговията, културата, ежедневните активности.
  14. • Кои са основните предизвикателства пред софтуера?
  15. a. Как да осигурим качеството на софтуера, който разработваме.
  16. b. Как да удовлетворим нарастващото търсене, като продължим да управляваме бюджета.
  17. c. Как да избегнем пагубните закъснения във времето.
  18. d. Как успешно да въведем нови софтуерни технологии.
  19. Софтуерът, който е предназнаен да се продава на клиент или потребител, се нарича продукт. Различават
  20. се два типа софтуерни продукти:
  21. • Общи (generic) продукти – самостоятелни продукти или системи, които се продават на пазара и
  22. са предназначени за всеки потребител, който иска и може да ги купи.
  23. • Поръчани (customized) продукти – продукти или системи, които са възложени от отделен клиент
  24. и се разработват само за него.
  25. Основната разлика между тези два типа софтуерни продукти е в това кой определя изискванията към
  26. продукта – в първия случай това е самата организация, а във втория – външните клиенти.
  27. 2. Характеристики на софтуера
  28. • логическата единица.
  29. • разработва се, а не се произвежда.
  30. • не се износва.
  31. • не се амортизира в резултат на външни явления.
  32. 3. Основни категории софтуер
  33. • Системен софтуер – съвкупност от програми, които са предназначени за обслужване на
  34. други програми. Има за цел да улесни работата на хардуера. Характеризира се с интензивна
  35. комуникация с хардуера, интензивно използване от много потребители и сложно управления на
  36. процеси. Примери – операционни системи, драйвъри за устройства, компилатори, асемблери.
  37. • Приложен софтуер – състои се от самостоятелни програми, които решават специфична
  38. нужда на бизнеса. Приложенията в тази категория обработват бизнес или технически данни, така
  39. че да улеснят бизнес операциите. Използва се все повече за управление на бизнес функции в
  40. реално време.
  41. • Научен софтуер – обслужва нуждите на отделни дялове от фундаменталните науки.
  42. Приложенията са свързани основно със симулации на системи, автоматизирано проектиране.
  43. ЕН, 2018/2019 2
  44. • Вграден софтуер – намира се в дадена система и се използва за реализиране и управление на
  45. определени функции вместо крайния потребител или системата. Може да извършва както
  46. елементарни функции, така и значителни по обем и сложност функции. Примери – мобилни
  47. телефони, домашни и медицински устройства, конзоли за видеоигри.
  48. • Продуктова линия – съвкупност от софтуерни системи, които притежават общи черти,
  49. задоволяващи нуждите на определен търговски сегмент или предопределена функция. Тези
  50. софтуерни системи са разработени от общи основни компоненти по определен начин (намалява
  51. цената за разработването на всичко). Повторното използване е планирано и задължително.
  52. • Уеб проложения – множество от свързани файлове хипертекст, които представят
  53. информация, използвайки текст и ограничени графики. Сложни среди, които осигуряват
  54. изчислителни функции и съдържение на крайния потребител и в допълнение се интегрират с бази
  55. данни.
  56. a. Работят в мрежова среда.
  57. b. Обикновено са многослойни.
  58. c. Ориентирани са към голям брой различни потребители.
  59. d. Трябва да позволяват едновременен достъп (натовареност).
  60. e. Водещи са данните, а не алгоритмите.
  61. f. Продължават да се развиват след внедряването.
  62. g. Изискват разработка в кратки срокове.
  63. • Изкуствен интелект – използва нечислови алгоритми за решаване на сложни проблеми,
  64. които не подлежат на изчисления или директен анализ. Примери – роботика, невронни мрежи
  65. • Наследен софтуер (Legacy software) – съществуващ софтуер, който е разработен преди
  66. няколко десетилетия и продължава да се използва като непрекъснато е бил променян, за да
  67. задоволи промени в бизнес изискванията и платформите (хардуерни и софтуерни).
  68. A. Характеристики:
  69. a. Дълъг живот.
  70. b. Критична важност за бизнеса.
  71. c. Лошо качество (нье сигурно).
  72. B. Причини за развитие на наследените системи. Софтуерът трябва:
  73. a. Да се адаптира, за да задоволи нуждите от нови среда за работа или технология.
  74. b. Да се разширява, за да реализира нови бизнес изисквания.
  75. c. Да се разширява, за да може да си взаимодейства със повече съвременни системи или БД.
  76. d. Да се изгражда повторно архитектурата му, за да може да работи и в рамките на мрежа.
  77. C. Четири възможности:
  78. a. Напълно отхвърляне на наследения софтуер.
  79. b. Непрекъснато поддържане на наследения софтуер.
  80. c. Трансформиране на наследения софтуер по такъв начин, че да се подобри възможността
  81. за поддръжка.
  82. d. Замяна на наследения софтуер с нов.
  83. Изводи
  84. • Софтуерът се проектира и изгражда от софтуерни инженери.
  85. • Софтуерът се използва от всеки един човек в обществото.
  86. • Софтуерните инженери разглеждат софтуера като съставен от програми, документи и данни,
  87. необходими за проектирането и изграждането на системата.
  88. • Потребителите на софтуер се интересуват само дали софтуерните продукти удовлетворяват
  89. техните очаквания и дали улесняват изпълнението на задачите им.
  90. ЕН, 2018/2019 3
  91. II. Софтуерно инженерство
  92. 1. Какво е инженерство?
  93. • Инженерството е анализ, проектиране, конструиране, верифициране и управление на
  94. технически (или социални) единици.
  95. • С какви въпроси се занимава инженерството?
  96. a. Какъв е проблемът, който трябва да се реши?
  97. b. Какви са характеристиките на единицата, която се използва за решаване на проблема?
  98. c. Как единицата (или решението) ще се реализират и конструират?
  99. d. Какъв подход ще се използва за откриване на грешки, които са направени по време на
  100. проектирането и конструирането?
  101. e. Как единицата ще се поддържа във времето?
  102. 2. Какво е софтуерно инженерство?
  103. • Дисциплина, която се занимава с всички
  104. аспекти на проектирането и
  105. разработването на висококачествен
  106. софтуер.
  107. • Занимава се с разбирането и анализирането
  108. на даден проблем.
  109. • Конструиране на решението от части,
  110. които засягат различни аспекти на
  111. проблема.
  112. • Прилагането на систематичен,
  113. дисциплиниран, количестено измерим подход
  114. към разработването, функционирането и
  115. поддръжката на софтуера. Изследване на
  116. тези подходи.
  117. • Решаване на проблема с използване на
  118. различни:
  119. a. Методи или техники (формална процедура
  120. за произвеждане на някакъв резултат).
  121. b. Средства (инструмент или автоматизирана система).
  122. c. Процедури (комбинация от средства и
  123. техники).
  124. d. Парадигми (определен подход или
  125. философия).
  126. • Може да се разглежда като технология на нива
  127. (от ниско към високо):
  128. a. Фокус към качеството.
  129. b. Софтуерен модел на процес.
  130. c. Методи.
  131. d. Средства.
  132. • Кои са основните предизвикателства пред СИ?
  133. a. Справяне с наследените системи, с нарастващо разнообразие и с изисквания за намалено
  134. време за доставка.
  135. b. Наследени системи – стари, ценни системи трябва да се поддържат и обновяват.
  136. ЕН, 2018/2019 4
  137. c. Хетерогенност – разработване на техники за изграждане на отказоустойчив софтуер, който е
  138. достатъчно гъвкав, за да се справи с хетерогенността.
  139. d. Доставяне на софтуер – има нарастващ натиск за по-бързо доставяне на големи и сложни
  140. системи без да се прави компромис с качеството им.
  141. 3. Разлика между СИ и Компютърни науки
  142. • КН се занимават с теория и фундаментални знания.
  143. • СИ се занимава с практическите въпроси за разработване и
  144. доставяне на полезен софтуер.
  145. • Теориите на КН не са достатъчни, за да служат като
  146. изчерпателна основа за СИ.
  147. 4. Разлика между СИ и Системно инженерство
  148. • Системното инженерство се занимава с всики аспекти на компютърно базираните системи
  149. включващи хардуер, софтуер и процес. Софтуерното инженерство е част от този процес.
  150. • Системните инженери са включени в спецификация на системата, архитектурен дизайн,
  151. интеграция и внедряване.
  152. 5. Цена на софтуера
  153. • Често цената на софтуера доминира цената на системата.
  154. • Цената за поддръжката на софтуера е повисока от цената за разработването.
  155. • Софтуерното инженерство се занимава с ефективно по отношение на цената разработване на
  156. софтуер.
  157. 6. Какво е добър софтуер?
  158. • Гледни точки към качеството
  159. a. Абстрактен поглед – качеството се разпознава, но не може да се дефинира.
  160. b. Потребителска гледна точка – качеството е съответствието на поставената цел.
  161. c. Гледна точка на разработчиците – качеството е съответствието на спецификацията.
  162. d. Гледна точка на продукта – качеството е свързано е с характеристиките на продукт.
  163. e. Гледна точка на цената – качеството е свързано със сумата, която е готов да плати клиента.
  164. • Качество на продукт и качество на процес – връзката не е директна.
  165. • Атрибути на добрия софтуер
  166. a. Възможност за поддръжка – да е написан по такъв начин, че да може да се развива, за да
  167. задоволи променящите се нужди на клиентите.
  168. b. Отказоустойчивост – надеждност, сигурност, защита.
  169. c. Ефикасност – време за отговор, време за обработка, използване на паметта.
  170. d. Използваемост – подходящ потребителски интерфейс и адекватна документация.
  171. 7. Софтуерен процес
  172. • Последователност от предвидими стъпки – план, който следвате, за да създадете продукт или
  173. система в срок и с високо качество.
  174. • Рамка на задачите, които е необходимо да се изпълнят, за да се изгради висококачествен
  175. софтуер.
  176. • Последователност от стъпки, включващи дейности, ограничения и ресурси, които осигуряват
  177. постигането на някакъв вид резултат.
  178. ЕН, 2018/2019 5
  179. • Процесът е повече от процедура – процесът е съвкупност от процедури, организирани така, че да
  180. се изграждат продукти, задоволяващи определени цели и стандарти.
  181. • Установяващ базата за управление на софтуерния проект и контекста, в който се прилагат
  182. техническите методи, създават се работните продукти, осигурява се качество.
  183. • Процес – хора – технология.
  184. • Етапи при разработването на софтуер
  185. a. Анализиране и дефиниране на
  186. изискванията.
  187. b. Проектиране на системата.
  188. c. Проектиране на програмата.
  189. d. Кодиране на програмата.
  190. e. Тестване на единиците (unit testing).
  191. f. Тестване на интегрираните единици.
  192. g. Тестване на системата.
  193. h. Доставяне на системата.
  194. i. Поддръжка.
  195. • Основни цели (процесът е нищо vs процесът е всичко)
  196. a. Ефикасност – способност за постигане на дадена цел, не е количествено понятия
  197. (!= ефективност).
  198. b. Възможност за поддръжка –
  199. непредвидими обстоятелства.
  200. c. Предсказуемост – предватително
  201. планиране и заделяне на ресурси.
  202. d. Повторяемост – използвай нещо готово
  203. пак.
  204. e. Качество – съответствие между продукта и
  205. неговата цел.
  206. f. Усъвършенстване – трябва да може да се
  207. адаптира.
  208. g. Проследяване – да се следи състоянието на продукта.
  209. • Характеристики
  210. a. Описва всички важни основни дейсности.
  211. b. Използва ресурси, които са най-често ограничени.
  212. c. Създава междинни и крайни работни продукти.
  213. d. Може да бъде композиран от подпроцеси с йерархии и връзки между тях.
  214. e. Представлява последователност от дейности.
  215. f. Съществуват входни и изходни критерии за всяка дейност и така е ясно кога започва и кога
  216. свършва определена дейност.
  217. g. Съществуват ръководни принципи, включително цели на всяка дейност.
  218. h. Съществуват ограничения за всяка дейност, били те по отношение на ресурсите или на
  219. очаквания работен продукт.
  220. • Рамка на процес – всяка дейност на рамката се състои от действия. Действието е съвкупност от
  221. свързани задачи, които произвеждат работен продукт. Всяко действие се състои от отделни
  222. работни задачи, които изпълняват част от цялото действие.
  223. A. Основни дейности (Framework activities) – малък брой, които са приложими за всички
  224. софтуерни проекти.
  225. ЕН, 2018/2019 6
  226. a. Комуникация (Communication) – интензивно взаимодействие и сътрудничесто с клиента.
  227. Събиране и разбиране на изисквания за функционалността и на ограниченията върху
  228. работата и разработката на продукта.
  229. b. Планиране (Planning) – създава план за бъдещата работа по разработка на софтуера.
  230. Описва техническите рискове, които трябва да се имат предвид, потенциалните рискове,
  231. необходимите ресурси, работните продукти, които ще се произведат, и времеви график на
  232. работата.
  233. c. Моделиране (Modeling) – създаване на модели, които са на различно ниво на
  234. абстракция. Създава се софтуерният дизайн – описание на структурата, на данните, на
  235. интерфейсите. Имаш анализ (събиране на изисквания, уточняване, договаряне,
  236. специфициране, валидиране) и проектиране (дизайн на данните, дизайн на
  237. архитектурата, дизайн на интерфейс, дизайн на ниво компоненти), съответно се
  238. получава като краен резултат модел на анализа и модел на дизайна. Важен работен
  239. продукт – софтуерната архитектура.
  240. d. Конструиране (Construction) – съчетава генерирането на код и тестването - тестване на
  241. самостоятелни компоненти, тестване на интегрираната система от компоненти (тестване
  242. на модули, тестване на подсистема и тестване на система) и потребителско тестване (бетатестване).
  243. e. Внедряване (Deployment) – предоставя се на клиента готовият продукт. Клиента оценява
  244. продукта.
  245. B. Допълнителни дейности (Umbrella activities) – приложими по време на целия софтуерен
  246. процес.
  247. a. Следене и управление на софтуерния проект – оценява се напредъка в сравнение с
  248. плана на проекта.
  249. b. Управление на риска – оценяват се рисковете.
  250. c. Осигуряване на качество
  251. d. Формални технически прегледи – оценява работните продукти.
  252. e. Измерване – дефинира и измерва мерки за процес, проект и продукт.
  253. f. Управление на софтуерната конфигурация – управлява последици от промени.
  254. g. Управление на повторното използване
  255. h. Подготовка и генериране на работни продукти
  256. • Модел на софтуерен процес – опростено описание на начина на разработване на софтуера,
  257. представено от определена гледна точка. Абстракция на действителния процес.
  258. A. Цели
  259. a. Формиране на общо разбиране у участниците в разработването на софтуер за дейностите,
  260. ресурсите и ограниченията.
  261. b. Намиране на несъответствия, излишества и пропуски в процеса от разработващия екип,
  262. което подпомага подобряването на процеса.
  263. c. Намиране и оценяване на подходящи дейности за постигане на целите на процеса.
  264. d. Адаптиране на общ процес към отделна ситуация, в която ще се приложи.
  265. B. Видове модели спрямо гледната точка
  266. a. Модел на потока от дейности (workflow model) – описва последователност от дейности,
  267. които се описват в процеса на разработка. Отделните дейности се описват със своите
  268. входни и изходни параметри.
  269. b. Модел на потока от данни (dataflow model) – описва множеството от дейности, които
  270. се извършват от гледна точка на преобразуване на данни.
  271. ЕН, 2018/2019 7
  272. c. Модел на роля/действие (role/action model) – описва отделните роли на хората, които
  273. участват в процеса на разработка и дейностите, които всяка от тези роли трябва да
  274. извърши.
  275. C. Разлики между моделите на процеси
  276. a. Общият поток от дейности и задачи и зависимостите между тях.
  277. b. Степента, до която са дефинирани работните задачи в рамките на всяка основна дейност.
  278. c. Степента, до която са дефинирани и изисквани работни продукти.
  279. d. Общата степен на детайлност и строгост, с които процеса е описан.
  280. e. Степента, до която купувачът и другите заинтересовани лица са включени в проекта.
  281. f. Степента, до която са описани структурата на екипа и отделните роли.
  282. D. Разграничаване на моделите на процеси
  283. a. По обратната връзка (feedback).
  284. b. Използваните методи за управление/контрол по време на разработването.
  285. c. Времетраенето на дейностите (Timing of activities).
  286. • Ad-hoc development
  287. a. Възможностите на процеса са непредвидими.
  288. b. Обикновено графиците, бюджетите, функционалността и качеството на продукта не са
  289. съгласувани.
  290. c. Производителността зависи от способностите на отделните хора и се променя с промяната на
  291. техните умения, знания и мотивация.
  292. Софтуерните модели на процеси могат да са описателни – описват историята как е протекло
  293. разработането на софтуерната система или предписателни – предписват как би трябвало да се
  294. разработи нова софтуерна система. Предписателните модели на процеси дефинират специално
  295. множество от задачи и работни продукти, които са необходими за създаването на софтуер с високо
  296. качество. Предписват работен поток – начина, по който елементите на процеса се съотнасят помежду си.
  297. Видове предписателни:
  298. • Каскаден (водопад)
  299. A. Същност – най-старият метод на структурирано разбратоване на софтуер. Предлага
  300. систематизиран, последователен подход към разработването на софтуер. Моделът налага поскоро структура на управление на проект за разработване на софтуер, отколкото да дава
  301. насоки как да се извършват отделните дейности.
  302. B. Дейности (основните)
  303. a. Събиране на софтуерните изисквания.
  304. b. Оценяване, изготвяне
  305. на график,
  306. проследяване.
  307. c. Анализ и проектиране.
  308. d. Генериране на код и
  309. тестване.
  310. e. Доставяне и поддръжка.
  311. C. Характеристики
  312. a. Ясно разграничен процес, който е лесен за разбиране.
  313. b. Всяка стъпка в модела завършва със създаване на множество от документи.
  314. c. Всяка дейност трябва да бъде напълно завършена преди преминаване към следващата,
  315. тоест след одобряване на множеството документи.
  316. ЕН, 2018/2019 8
  317. d. Ясно са дефинирани входовете и изходите на дейностите, както и интерфейсите между
  318. отделните стъпки.
  319. e. Ясно са дефинирани ролите на разработчиците на софтуер.
  320. D. Проблеми
  321. a. Реалните проекти рядко следват последователния поток на разработка, който се предлага
  322. от модела.
  323. b. Моделът налага по-скоро структура на управление на проект за разработване на софтуер,
  324. отколкото да дава насоки как да се извършват отделните дейности.
  325. c. Трудно е за потребителя да формулира всичките си изисквания в началото.
  326. d. Клиентът трябва да е търпелив, тъй като няма достъп между отделните модули.
  327. e. Разделянето на проекта на отделни етапи не е гъвкаво.
  328. f. Трудно е да се реагира на променящите се изисквания на клиента.
  329. E. Използване – когато изискванията са осъзнати и ясно формулирани още в началото и когато
  330. проектите са ясно организирани в смисъл на ясно дефинирани роли. Още, при големи проекти,
  331. за които времето и бюджета не са критични.
  332. • Модел на бързата разработка (RAD)
  333. A. Същност – високоскоростна адаптация на модела на водопада. Целта му е кратък цикъл на
  334. разработка (60-90 дена). За постигането й се разчита на използването на различни средства
  335. за бърза разработка.
  336. B. Дейности
  337. a. Комуникация.
  338. b. Планиране – няколко софтуерни екипа работят паралелно.
  339. c. Моделиране – всеки екип извършва отделно моделиране на своя модул. Има три вида –
  340. бизнес модел, модел на данните и модел на процес.
  341. d. Конструиране – най-често се използват предварително съществуващи софтуерни
  342. компоненти, които се интегрират, и средства за автоматично генериране на код.
  343. e. Внедряване.
  344. C. Проблеми
  345. a. За големи приложения,
  346. подлежащи на разделяне на
  347. модули – не е подходящо,
  348. трябват много хора.
  349. b. Когато функционалността на
  350. софтуера не може да бъде
  351. разделена на отделни модули
  352. (различна времетраеност на
  353. всеки модул).
  354. c. Когато е важна високата
  355. производителност на
  356. софтуерното приложение.
  357. d. Когато за разработката на
  358. приложението се разчита на все
  359. още нови и неусвоени
  360. технологии.
  361. D. Използване – при проекти, чиято функционалност може да се разпредели в отделни модули,
  362. така че да могат да се реализират в рамките на 60-90 дни.
  363. ЕН, 2018/2019 9
  364. Видове фазови (еволюционни) модели:
  365. • Инкрементателен
  366. A. Същност – не доставя системата
  367. като едно цяло, а вместо това
  368. процесът на разработка и
  369. доставянето са разделени на
  370. стъпки, като всяка стъпка доставя
  371. само част от цялята
  372. функционалност. След като
  373. започне разработването на една
  374. стъпка изискванията не се променят. С всеки доставен следващ инкремент постепенно се
  375. осигурява все повече функционалност на клиента. Комбинира елементи на модела на
  376. водопада, но приложени на отделни стъпки.
  377. • Итеративен
  378. A. Същност – още в началото доставя цялостната система, макар и част от функционалността
  379. да е в примитивна форма. При всяка следваща итерация не се добавя нова функционалност,
  380. а само се усъвършенства съществуващата.
  381. B. Проблеми и на двата еволюционни модели
  382. a. Необходимостта от активно участие на клиентите по време на изпълнение на проекта
  383. може да доведе до закъснения.
  384. b. Уменията за комуникация и координация са от особено голямо значение при разработката
  385. и ако не са на достатъчно добро ниво, водят до проблеми.
  386. c. Неформалните заявки за подобрения след завършването на всяка стъпка могат да доведат
  387. до объркване.
  388. d. Този модел може да доведе до т. нар. “scope creep” – бавно и постепенно разширяване на
  389. обхвата на приложението, без процесът да е сходящ.
  390. C. Предимства и на двата еволюционни модели
  391. a. Клиентът може да използва системата, преди да е готов целият продукт.
  392. b. Първите стъпки могат да служат като прототип, за да помогнат за извличане и изясняване
  393. на изискванията към следващите стъпки.
  394. c. По-малък риск от неуспех на целия проект.
  395. d. Функционалностите от цялата система, които са с най-висок приоритет, са тествани наймного.
  396. D. Използване - когато организацията няма достатъчно човешки ресурс за цялостната
  397. реализация в определен срок или когато с итерациите може да се управляват технологичните
  398. рискове.
  399. • Прототипен модел
  400. A. Същност - два типа – еволюционен прототип – да достави работеща система на крайния
  401. потребител и хвърлен прототип – да подпомогне специфицирането на изискванията към
  402. софтуера. Основната цел на прототипния модел е изграждане на прототип, който да извлече
  403. или валидира системните изисквания. Могат да се оценят рисковете на процеса.
  404. ЕН, 2018/2019 10
  405. B. Подходи
  406. a. Създаване на основните потребителски
  407. интерфейси, без да има някакво
  408. значително кодиране.
  409. b. Разработване на съкратена версия на
  410. системата, която изпълнява
  411. ограничено подмножество от
  412. функции.
  413. c. Използване на съществуваща система
  414. или компоненти от система, за да се
  415. демонстрират някои функции, които
  416. ще бъдат включени в разработваната
  417. система.
  418. C. Проблеми
  419. a. Прототипният модел може да използва значителни ресурси, а като резултат прототипът да
  420. не успее да удовлетвори очакванията.
  421. b. Прототипът може да доведе до лошо проектирана система, ако самият той стане част от
  422. крайния продукт.
  423. c. Прототипният модел не е подходящ за използване при разработване на софтуерни
  424. системи, където проблемът е добре разбран и интерфейсът е ясен и прост.
  425. D. Използване – в проекти, където не са достатъчно ясни потребителските изисквания и дизайнът
  426. на софтуерната система. Може да се използва както самостоятелно, така и с други модели на
  427. процеси.
  428. • Спираловиден модел
  429. A. Същност – еволюционен модел на
  430. софтуерен процес, който съчетава
  431. прототипния модел и модела на
  432. водопада. Движещият се фактор е
  433. анализ на риска. Основни
  434. характеристики са
  435. итеративен/цикличен подход и че
  436. има множество от точки на прогреса.
  437. B. Сектори – при всяко завъртане на
  438. спиралата се преминава през
  439. следните сектори:
  440. a. Установяване на целите –
  441. определят се целите,
  442. алтернативите и ограниченията на текущата фаза от разботката.
  443. b. Оценка на рисковете и намаляването им – идентифицират се и се анализират
  444. потенциалните рискове и се предприемат действия за намаляването или елиминирането
  445. им.
  446. c. Разработване и валидиране – избира се модел за разработване на текущата фаза.
  447. d. Планиране – преглежда се и се анализира текущото състояние и се планира следващото
  448. завъртане по спиралата.
  449. C. Проблеми
  450. ЕН, 2018/2019 11
  451. a. Може да се окаже трудно да се убедят клиентите, че процесът на разработка е
  452. контролируем, а не е безкраен цикъл.
  453. b. Изисква се участието на разработчици с компетентност за оценка на рисковете.
  454. c. Ако не се идентифицира и открие някой основен риск, това може да доведе до неуспех.
  455. D. Използване – при разработване на големи (large-scale) софтуерни системи. Може да се
  456. адаптира и да се прилага през целия жизнен цикъл на софтуера.
  457. • Метод на формалната трансформация – скъп и бавен процес. Основава се на математическо
  458. трансформиране на спецификацията на системните изисквания до изпълнима програма.
  459. Дейностите моделиране и конструиране са заменени с разработване и прилагане на
  460. трансформации. При трансформирането трябва да се запази коректността и ясно да се покаже, че
  461. изпълнимата програма съответства на спецификацията. Използва се при разработването на
  462. софтуерни системи, които са свързани с поддръжката на човешки живот и за които трябва да са
  463. гарантирани сигурността и отказоустойчивостта на софтуера, преди да започне реалното му
  464. използване.
  465. Как да изберем нашия модел?
  466. • Постоянна среда – изискванията към софтуерната система не се променят и могат да бъдат
  467. формулирани ясно и изчерпателно. Модел на водопада или спираловиден.
  468. • Бурна среда – непрекъснато и организацията претърпява промени, и изискванията към системата
  469. се променят. Модел на бързата разработка или прототипен модел.
  470. • Несигурна среда – изискванията към системата са неясни или несигурни. Когато системата е нова
  471. и не е решаван подобен проблем или решава проблеми по нов начин. Нови модели, които да
  472. включват елементи на прототипния модел и модела на бързата разработка.
  473. • Адаптивна среда – средата може да се променя като реакция на системата, която е била
  474. разработена и това води до промяна на изискванията.
  475. 8. Шаблони
  476. • Шаблон – описание на общо решение на общ проблем или въпрос, на базата на което може да се
  477. извлече детайлно решение на специфичен проблем.
  478. • Шаблон на процес – шаблон, който описва доказан, успешен подход и/или последователност от
  479. действия за разработване на софтуер. Важна характеристика на шаблон на процес е, че той описва
  480. какво трябва да се направи, а не точни детайли как трябва да се направи. Шаблоните могат да
  481. бъдат дефинирани на различни нива на абстракция.
  482. 9. Методи на софтуерното инженерство
  483. • Структуриран подход към разработването на софтуер, чиято цел е да улесни създаването
  484. на рентабилен софтуер с високо качество.
  485. • Компоненти
  486. a. Описания на отделните модели на системата.
  487. b. Правила.
  488. c. Препоръки.
  489. d. Упътване на процеса.
  490. 10. Софтуерни средства
  491. • CASE средства са софтуерни системи, които са проектирани да поддържат рутинни активности от
  492. софтуерния процес.
  493. ЕН, 2018/2019 12
  494. • Различни типове програми, които се използват да поддържат дейностите от софтуерния
  495. процес.
  496. • Осигуряват автоматична или полуавтоматична поддържа на софтуерните процеси и методи.
  497. Улесняват дейностите, които се извършват в рамките на процеса на разработка.
  498. • CASE (Computer-Aided Software Engineering) – система, поддържаща разработката на
  499. софтуер, която е изградена на базата на интегриране на отделни средства, така че
  500. информацията да се използва от едно място на друго.
  501. a. UPPER-CASE средства – поддържат началните фази – анализ и проектиране.
  502. b. LOWER-CASE средства – поддържат фазите на реализация и тестване.
  503. Изводи
  504. • Софтуерното инженерство е дисциплина, която интегрира процеси, методи и средства за
  505. разработване на софтуер.
  506. • Софтуерният процес се състои от активности, които се извършват при разработването на
  507. софтуер.
  508. • Методите са организиран начин за създаване на софтуер.
  509. Предписателни модели на софтуерен процес
  510. • Различен поток на процес.
  511. • Еднакво множество от основни дейности.
  512. Всички модели на процеси дефинират:
  513. • Множество от основни дейности.
  514. • Съвкупност от задачи, които водят до завършване на всяка дейност.
  515. • Работни продукти, като следствие от задачите.
  516. • Множество от допълнителни дейности, които обхващат целия процес.
  517. ЕН, 2018/2019 13
  518. III. Гъвкаво разработване на софтуер
  519. 1. Философия на гъвкавото разработване
  520. • Отделните хора и итерации са по-важни, отколкото процесите и средствата – хората са най-важния
  521. елемент на успеха.
  522. • Работещият процес е по-важен от изчерпателната документация – твърде много документация е
  523. по-зле от твърде малко.
  524. • Сътрудничеството с клиентите е по-важно от формалните клаузи в сключения договор – важно е
  525. да има обратна връзка.
  526. • Реагиране на възникнали промени е по-важно от стриктното следване на плана – детайлен план
  527. за следващите седмици, общ план за следващите месеци и ориентировъчно за по-нататък.
  528. 2. Rapid software development
  529. • Businesses operate in a fast –changing requirement and it is practically impossible to produce a set of
  530. stable software requirements.
  531. • Software has to evolve quickly to reflect changing business needs.
  532. • Specification, design and implementation are inter-leaved.
  533. • System is developed as a series of versions with stakeholders involved in version evaluation.
  534. • User interfaces are often developed using an IDE and graphical toolset.
  535. 3. Гъвкави методологии – поставянето на хората като основен фактор за успеха на проекта и
  536. фoкусирането върху ефективността и маневреността на процеса на разработка.
  537. • Agile methods are incremental development methods that focus on rapid development, frequent
  538. releases of the software, reducing process overheads and producing high-quality code. They involve the
  539. customer directly in the development process.
  540. • Общи черти за практиките
  541. a. Разработването се извършва на
  542. къси итерации (1 седмица до 1
  543. месец).
  544. b. Клиентът итеративно получава
  545. работещи версии на системата.
  546. c. Качеството е първи приоритет.
  547. d. Обикновено целият екип е
  548. събран на едно място, за
  549. улесняване на неформалната
  550. комуникация.
  551. e. Информацията за развитието на
  552. проекта е на общодостъпно място.
  553. f. Постоянно обучение.
  554. g. Промяната дори и на работещата подсистема се възприема като нещо нормално.
  555. • Проблеми
  556. a. Да държиш интереса на клиентите си.
  557. b. Подреждането на приоритетите.
  558. c. Старанието всичко да е „много просто“ изисква повече работа.
  559. d. Екипът не се разбира.
  560. e. Договаряне.
  561. • Приложимост
  562. ЕН, 2018/2019 14
  563. a. Product development where a software company is developing a small or medium-sized product for
  564. sale.
  565. b. Custom system development within an organization, where there is a clear commitment from the
  566. customer to become involved in the development process and where there are not a lot of external
  567. rules and regulations that affect the software.
  568. • Поддръжка
  569. a. Most organizations spend more on maintaining existing software than they do on new software
  570. development. So, if agile methods are to be successful, they have to support maintenance as well
  571. as original development.
  572. 4. Plan-driven and agile development
  573. • Plan-driven development
  574. a. A plan-driven approach to software
  575. engineering is based around separate
  576. development stages with the outputs to be
  577. produced at each of these stages planned in
  578. advance.
  579. b. Not necessarily waterfall model – plan-driven,
  580. incremental development is possible.
  581. c. Iteration occurs within activities.
  582. • Agile development
  583. a. Specification, design, implementation and
  584. testing are interleaved and the outputs from
  585. the development process are decided through a process of negotiation during the software
  586. development process.
  587. • Как да изберем?
  588. a. Is it important to have a very detailed specification and design before moving to implementation?
  589. If so, you probably need to use a plan-driven approach.
  590. b. Is an incremental delivery strategy, where you deliver the software to customers and get rapid
  591. feedback from them, realistic? If so, consider using agile methods.
  592. c. How large is the system that is being developed? Agile methods are most effective when the system
  593. can be developed with a small co-located team who can communicate informally. This may not be
  594. possible for large systems that require larger development teams so a plan-driven approach may
  595. have to be used.
  596. d. Plan-driven approaches may be required for systems that require a lot of analysis before
  597. implementation (e.g. real-time system with complex timing requirements).
  598. 5. Extreme programming
  599. • Най-често използваната гъвкава методология.
  600. • Четири основни ценности – комуникация,
  601. простота, кураж и обратна връзка.
  602. a. New versions may be built several times per day.
  603. b. Increments are delivered to customers every 2
  604. weeks.
  605. c. All tests must be run for every build and the
  606. build is only accepted if tests run successfully.
  607. d. In XP, a customer or user is part of the XP team and is responsible for making decisions on
  608. requirements. Customer involvement means full-time customer engagement with the team.
  609. ЕН, 2018/2019 15
  610. e. Maintaining simplicity through constant refactoring of code.
  611. f. Extreme programming is a well-known agile method that integrates a range of good programming
  612. practices such as frequent releases of the software, continuous software improvement and
  613. customer participation in the development team.
  614. • Фази
  615. a. На проучване.
  616. b. На планиране.
  617. c. На итерациите.
  618. d. На готовия продукт.
  619. e. На поддръжка.
  620. f. На смърт – готов продукт.
  621. • Практики
  622. a. Планиране.
  623. b. Кратки версии.
  624. c. Опростен дизайн.
  625. d. Тестване преди програмиране.
  626. e. Рефакторинг.
  627. f. Програмиране по двойки.
  628. g. Колективна собственост.
  629. h. Постоянна интеграция.
  630. i. 40-часова работна седмица.
  631. j. Клиент при разработчиците.
  632. • Testing (Test-driven development)
  633. a. Writing tests before code clarifies the
  634. requirements to be implemented.
  635. b. Tests are written as programs rather than data so that they can be executed automatically. The test
  636. includes a check that it has executed correctly.
  637. c. All previous and new tests are run automatically when new functionality is added, thus checking
  638. that the new functionality has not introduced errors.
  639. d. The role of the customer in the testing process is to help develop acceptance tests for the stories
  640. that are to be implemented in the next release of the system.
  641. e. The customer who is part of the team writes tests as development proceeds. All new code is
  642. therefore validated to ensure that it is what the customer needs.
  643. f. Programmers prefer programming to testing and sometimes they take short cuts when writing tests.
  644. For example, they may write incomplete tests that do not check for all possible exceptions that may
  645. occur.
  646. g. It’s difficult to judge the completeness of a set of tests. Although you may have a lot of system tests,
  647. your test set may not provide complete coverage.
  648. • Refactoring
  649. a. Programming team looks for possible software improvements and make these improvements even
  650. where there is no immediate need for them.
  651. b. This improves the understandability of the software and so reduces the need for documentation.
  652. c. Changes are easier to make because the code is well structured and clear.
  653. d. However, some changes require architecture refactoring and this is much more expensive.
  654. e. Re-organization of a class hierarchy to remove duplicate code.
  655. f. Tidying up and renaming attributes and methods to make them easier to understand.
  656. ЕН, 2018/2019 16
  657. • Pair programming
  658. a. In XP, programmers work in pairs, sitting together to develop code.
  659. b. This helps develop common ownership of code and spreads knowledge across the team.
  660. c. It serves as an informal review process as each line of code is looked at by more than 1 person.
  661. d. It encourages refactoring as the whole team can benefit from this.
  662. e. Measurements suggest that development productivity with pair programming is similar to that of
  663. two people working independently.
  664. f. Pairs are created dynamically so that all team members work with each other during the
  665. development process.
  666. g. The sharing of knowledge that happens during pair programming is very important as it reduces the
  667. overall risks to a project when team members leave.
  668. h. Pair programming is not necessarily inefficient and there is evidence that a pair working together is
  669. more efficient than 2 programmers working separately.
  670. i. It supports the idea of collective ownership and responsibility for the system.
  671. j. It helps support refactoring, which is a process of software improvement.
  672. • Използване – приложим при малки и средни екипи ( 3 – 20 души). Методологията е подходяща
  673. за разработването както на софтуерни приложения, решаващи специфични бизнес проблеми,
  674. така и на уеб-базирани системи.
  675. 6. Agile project management
  676. • The principal responsibility of software project managers is to manage the project so that the software
  677. is delivered on time and within the planned budget for the project.
  678. • Agile project management requires a different approach, which is adapted to incremental development
  679. and the particular strengths of agile methods.
  680. 7. Scrum
  681. • Разработката на една система се обуславя от различни променливи като изисквания към
  682. продукта, време за разработка, налични ресурси и технологии, които има вероятност да бъдат
  683. променени.
  684. • Процесът на разработка е непредвидим от самото начало, изискващ гъвкавост от използвания
  685. процес, за да бъде в състояние да отговори на тези промени.
  686. • Предимства
  687. a. The product is broken down into a set of manageable and understandable chunks.
  688. b. Unstable requirements do not hold up progress.
  689. c. The whole team have visibility of everything and consequently team communication is improved.
  690. d. Customers see on-time delivery of increments and gain feedback on how the product works.
  691. e. Trust between customers and developers is established and a positive culture is created in which
  692. everyone expects the project to succeed.
  693. f. The whole team attends short daily meetings where all team members share information, describe
  694. their progress since the last meeting, problems that have arisen and what is planned for the
  695. following day
  696. • Фази – три фази
  697. A. Предварителна.
  698. a. Планиране – дефиниране на
  699. системата преди началото на
  700. разработка.
  701. b. Дизайн и архитектура на
  702. високо ниво – системата се
  703. ЕН, 2018/2019 17
  704. проектира на най-високо ниво, създава се архитектурата на базата на текущите елементи
  705. в списъка с изискванията на продукта.
  706. B. Фаза на развитие – разработка (всичко непредвидимо може да се случи). Системата се
  707. разработва на спринтове – 30-дневни итеративни цикли.During this stage the team is isolated
  708. from the customer and the organization, with all communications channelled through the socalled ‘Scrum master’. The starting point for planning is the product backlog, which is the list of
  709. work to be done on the project. Разработва се нова функционалност за системата или се
  710. подобрява вече съществуваща. The selection phase involves all of the project team who work
  711. with the customer to select the features and functionality to be developed during the sprint.
  712. Всеки спринт има фиксирана дължина от 2 до 4 седмици. В разработката на дадена система
  713. е препоръчително да се включат между 3 и 8 спринта.
  714. C. Заключителна фаза – приключване на проекта и създаване на готова версия на системата.
  715. • Екипна работа
  716. a. The ‘Scrum master’ is a facilitator who arranges daily meetings, tracks the backlog of work to be
  717. done, records decisions, measures progress against the backlog and communicates with customers
  718. and management outside of the team.
  719. b. The whole team attends short daily meetings where all team members share information, describe
  720. their progress since the last meeting, problems that have arisen and what is planned for the
  721. following day.
  722. • Практики
  723. a. Списък с изисквания за продукта. (Product backlog)
  724. b. Оценяване на количеството работа.
  725. c. Спринт.
  726. d. Среща за планиране преди всеки спринт.
  727. e. Списък с изискванията за спринт.
  728. f. Дневни срещи.
  729. g. Среща за преглед на спринта.
  730. • Използване – концентрира се върху това как да работят членовете на екипа, за да придадат
  731. гъвкавост на разработвания продукт при постоянно променящи се изисквания. Два начина на
  732. приложение – при създаване на нов продукт или при подобряването и надграждането на вече
  733. съществуващ продукт. Може да се приложи и по време на изпълнение на вече съществуващ
  734. проект. Обикновено се преминава към Scrum при често появяване на проблеми поради
  735. постоянно променяща се среда при вече запознал проект. Екип от 5 до 9 души.
  736. 8. Scaling agile methods
  737. • Agile methods have proved to be successful for small and medium sized projects that can be developed
  738. by a small co-located team.
  739. • It is sometimes argued that the success of these methods comes because of improved communications
  740. which is possible when everyone is working together.
  741. • Scaling up agile methods involves changing these to cope with larger, longer projects where there are
  742. multiple development teams, perhaps working in different locations.
  743. • ‘Scaling up’ is concerned with using agile methods for developing large software systems that cannot be
  744. developed by a small team.
  745. • ‘Scaling out’ is concerned with how agile methods can be introduced across a large organization with
  746. many years of software development experience.
  747. • Scaling agile methods for large systems is difficult. Large systems need up-front design and some
  748. documentation.
  749. ЕН, 2018/2019 18
  750. IV. Софтуерни изисквания
  751. 1. Инженеринг на изискванията.
  752. • Процес на установяване на услугите, които даден клиент изисква от системата, както и
  753. ограниченията на работа и разработване.
  754. • Сами по себе си изискванията са описание на системните функции и ограниченията, които се
  755. установяват по време на инженеринга на изискванията.
  756. • Дисциплина от софтуерното/ системното инженерство, която обхваща дейностите по
  757. специфициране на продукта/системата.
  758. • ИИ е изключително важна част от процеса на системно разработване, която направлява всички
  759. останали дейности към постигане на резултатите, за които системата е предназначена.
  760. • ИИ оказва влияние на целия жизнен цикъл на дадена система.
  761. • Какво е изискване?
  762. a. Изискванията са спецификации на това, което трябва да бъде разработено. Те са описание на
  763. начина на поведение на система. Могат да представляват също и ограничения върху процеса
  764. на разработване.
  765. b. Изискванията спомагат да се дефинира – стойността на и необходимостта от дадена система,
  766. общото разбиране за системната функционалност, какво трябва да прави дадена система, но
  767. не и как да го прави.
  768. c. Изискванията са зависими от гледните точки на различните участници в процеса на
  769. разработване.
  770. d. Изискванията могат да варират от много абстрактни описания на дадена системна
  771. функционалност или ограничения до много точни и детайлни математически функционални
  772. спецификации.
  773. e. Могат да послужат като заявка за търг – следователно тряба да са отворени за интерпретация.
  774. f. Могат да бъдат и база за договор – следователно тряба да бъдат детайлно дефинирани.
  775. • “Да пишем и да поправяме" или да въведем дисциплиниран подход при разработването на
  776. софтуер?
  777. • Основни дейности на ИИ
  778. a. Идентифициране на изискванията.
  779. b. Анализ на изискванията.
  780. c. Валидиране на изикванията.
  781. d. Управление на изискванията.
  782. • Пълнота и консистентност на изискванията
  783. a. Пълни – трябва да включват описание на всички изисквани функции.
  784. b. Консистентни – не трябва да има конфликти или противоречия при описанието на системните
  785. функции.
  786. c. Малко е невъзможно да са и двете на практика.
  787. 2. Видове изисквания
  788. • Потребителски изисквания – описват функционални и нефункционални изисквания, по начин
  789. разбираем за системните потребители, които нямат технически познания. Потребителските
  790. изисквания се описват на естествен език с таблици и диаграми, които биха били разбираеми за
  791. всички потребители. Написани за клиентите, системни потребители, технолози при клиента,
  792. специалисти по договори, системни архитекти.
  793. • Системни изисквания – структуриран документ с детайлно описание на системните функции,
  794. услуги и оперативни ограничения. Предназначени са да послужат като основа на дизайна на
  795. ЕН, 2018/2019 19
  796. системата. Определят какво трябва да се имплементира и може да бъде част от договора между
  797. клиента и разработчика. Системните изисквания могат да бъдат дефинирани и илюстрирани като
  798. се използват различни системни модели. Написани за системните потребители, технолози при
  799. клиента, системни архитекти, разработчиците.
  800. • Функционални изисквания
  801. a. Oписание на услугите, които системата трябва да предоставя, начинът, по който системата
  802. трябва да реагира на конкретни входни данни и поведението и в конкретни ситуации.
  803. b. Детайлно твърдение за поведението на системата от гледна точка на крайния потребител.
  804. c. Зависят от типа на софтуера, потенциалните потребители и типа на системата, в която ще бъде
  805. използван софтуера.
  806. d. Функционалните потребителски изисквания могат да бъдат описания на високо ниво на
  807. това какво трябва да прави системата, но функционалните системните изисквания трябва
  808. да описват системната функционалност в детайли.
  809. • Нефункционални изисквания
  810. A. Oграничения върху услугите или функционалността на системата като времеви ограничения,
  811. ограничения върху процеса на разработване, използваните стандарти и др.
  812. B. Изисквания към процеса могат също да бъдат специфицирани – например конкретна CASE
  813. система, програмен език или метод на разработване.
  814. C. Нефункционалните изисквания могат да бъдат по-критични от функционалните и от тях може
  815. да зависи пригодността на системата.
  816. D. Трудно е да се специфицират прецизно нефункционалните изисквания, а непрецизните
  817. изисквания трудно се верифицират.
  818. E. Определят системни характеристики и ограничения като надежност, време за отговор и др.
  819. F. Видове
  820. a. Продуктови изисквания – изисквания, които определят поведението на продукта, като
  821. време за изпълнение, надежност и др.
  822. b. Организационни изисквания – изисквания, които са следствие на практиката и
  823. процедурите в дадена организация, като прилаганите стандарти при процеса на
  824. разработване, изисквания към имплементцията, доставка и др.
  825. c. Външни изисквания – изисквания породени от външни за системата и процеса на
  826. разработване фактори, като изисквания за оперативна съвместимост и нормативни
  827. (законодателни) изисквания, етични и др.
  828. G. Цели и изисквания
  829. a. Основно виждане на потребителя като лесно ползване.
  830. b. Верифицируеми нефункционални изискваня – основават се на мерки, които могат да
  831. бъдат обективно тествани.
  832. c. Целите са полезни на разрабочтчиците, защото представят виждането на системните
  833. потребители.
  834. • Изисквания на приложната област
  835. a. Oписват характеристики и особености на системата, отразяващи спецификите на областта.
  836. b. Могат да бъдат нови функционални изисквания, ограничения върху вече съществуващи
  837. изисквания или да дефинират специфични изчисления.
  838. c. Изискванията са изразени на езика на приложната област. Това често ги прави неразбираеми
  839. за софтуерните инженери, разработващи системата.
  840. d. Имплицитност – специалистите от приложната област познават областта толкова добре, че те
  841. не могат да определят изискванията експлицитно/явно.
  842. ЕН, 2018/2019 20
  843. 3. Спецификация на софтуерните изисквания
  844. • Спецификацията на софтуерните изисквания е официално становище за това какво се изисква от
  845. разработчиците на системата.
  846. • Включва едновременно дефиниция на потребителските изисквания и спецификация на
  847. системните изисквания.
  848. • Да се опише валидирането на изискванията и ролята на ревютата на изисквания.
  849. • Не е дизайн документ. До колкото това е възможно трябва да се наблегне на това КАКВО трябва
  850. да прави системата, отколкото на това КАК да го прави.
  851. • „Участници“
  852. a. Клиенти - специфицират изискванията и ги четат за да са сигурни, че отговарят на техните
  853. нужди. Специфицират промени в изискванията.
  854. b. Менажери - използват документа за да планират разработването на системата.
  855. c. Системни инженери - използват документа за да разберат какво трябва да се разработва.
  856. d. Системни тест инженери - използват документа за да разработят тестовете за валидиране на
  857. системата.
  858. e. Инженери по поддръжката на системата - използват документа за да разберат системата и
  859. връзките между нейните части.
  860. • Видове гледни точки
  861. a. Гледни точки на взаимодействие – хора или други системи, които си взаимодействат пряко
  862. със системата.
  863. b. Индиректни гледни точки – заинтересованите лица, които не са преки потребители на
  864. системата, но влияят на изискванията.
  865. c. Гледни точки на приложната област – спецификите и ограниченията на приложната област,
  866. които влияят на изискванията.
  867. • Процес
  868. a. Откриване на изискванията – взаимдействия със заинтересованите лица, за да се установят
  869. изискванията. На този етап се определят и изискванията на приложната област.
  870. b. Организиране и класификация на изискванията – свързаните изисквания могат да бъдат
  871. класифицирани и организирани в съгласувани групи (клъстери).
  872. c. Приоритизация и договаряне – приоритизиране на изискванията и разрешаване на
  873. конфликтите.
  874. d. Документиране на изискванията – изискванията за документирани и се тръгва по следващия
  875. цикъл на спиралата.
  876. • Проучвания за осъществимост - проучване за осъществимост се прави с цел да се докаже че
  877. разработването на системата си струва. Базирано на оценка на информацията (какво е
  878. необходимо), събиране на информация и писане на доклад.
  879. • Интервюта
  880. a. Във формални или неформални интервюта екипът по определяне на изисквнията задава
  881. въпроси на заинтересованите лица за системата, коато използват и за тази, която ще бъде
  882. разработена.
  883. b. Затворени интервюта, при които се задават предварително дефинирани въпроси.
  884. c. Отворени интервюта, при които няма предефиниран план и се провежда отворена дискусия.
  885. d. Най-често смесени затворени и отворени интервюта.
  886. e. Интервютата са добра практика за придобиване на цялостна представа за това какво правят
  887. заинтересованите лица и как ще си взаимодействат със системата.
  888. f. Интервютата не са удачни за разбиране на изискванията на приложната област.
  889. ЕН, 2018/2019 21
  890. • Социални и организационни фактори
  891. a. Софтуерните системи се използват в социален и организационен контекст. Това може да
  892. повлияе и дори да е доминиращо при определяне на системните изисквания.
  893. • Етнография
  894. a. Социалният изследовател отделя много време да наблюдава и анализира поведението на
  895. хората по време на работа.
  896. b. Не се налага хората да обясняват и анализират начина си на работа.
  897. c. Етнографските изследвания са показали, че най-често работата е много по-сложна отколкото
  898. предполагат опростените системните модели.
  899. 4. IEEE стандарт за изисквания
  900. • Дефинира основна структура за спецификацията на софтуерните изисквания, която да бъде
  901. инстанциирана за всяка специфична система.
  902. • Въведение. – Основно описание. – Специфични изисквания. – Приложения. – Индекс.
  903. 5. Валидиране на изискванията (при спецификацията на изисквания)
  904. • Целта е да се демонстрира, че изискванията определят системата, която клиентът наистина иска.
  905. • Поправяне на грешка допусната при определяне на изискванията след доставянето на системата
  906. може да струва до 100 пъти повече, отколкото поправянето на грешка от имплементацията.
  907. • Грешките при определяне на изискванията струват много скъпо и за това валидирането е особено
  908. важно.
  909. • Проверка на изискванията
  910. a. Валидност - дали системата наистина предоставя функциите, които да отговорят най-добре на
  911. нуждите на клиента?
  912. b. Консистентност - има ли противоречиви изисквания?
  913. c. Пълнота - включени ли са всички функции, изискани от клиента?
  914. d. Реалистичност - могат ли изискванията да бъдат реализирани предвид наличните бюджет и
  915. технологии?
  916. e. Верифицируемост - могат ли изискванията да бъдат променени?
  917. • Ревюта на изисквнията
  918. A. Периодични ревюта трябва да бъдат провеждани, при процеса на дефиниране на
  919. изискванията.
  920. B. В ревютата трябва да бъдат включени хора както от страна на клиента, така и специалисти от
  921. страна на разработващата организация.
  922. C. Проверява:
  923. a. Верифицируемост. Дали изискванията могат да бъдат реалистично верифицирани/
  924. тествани?
  925. b. Понятност. Дали изискването е правилно разбрано?
  926. c. Проследяемост. Дали произхода на изискването е ясно дефиниран?
  927. d. Адаптивност. Може ли изискването да бъде променено, без това да повлияе силно на
  928. останалите изисквания?
  929. • Прототипиране
  930. a. Използване на работещ модел на системата, за да се проверят изискванията.
  931. • Генериране на тестови случаи
  932. 6. Управление на изискванията
  933. • Управлението на изискванията е процес на управление на променящите се изисквания по време
  934. на определянето на изискванията и системното разработване.
  935. ЕН, 2018/2019 22
  936. • Постоянни и променливи изисквания.
  937. • Планиране на управлението на изискванията
  938. a. Идентифицирането на изискванията.
  939. b. Процеса на управление на промените при изискванията.
  940. c. Политиката на проследяемост.
  941. d. Използване на CASE системи.
  942. • Управление на промените при изискванията
  943. a. Анализ на проблема. Дискутиране на проблема с изискванията и предложение за промяна.
  944. b. Анализ на промените и цената им. Оценка на влиянието на промяната върху други изисквания.
  945. c. Реализиране на промяната. Промяна на документа с изискванията и другите документи за да
  946. се отрази промяната.
  947. 7. Класификация на изискванията
  948. • Мутиращи изисквания - изисквания, които се променят, поради помени в средата, в която работи
  949. организацията.
  950. • Появяващи се изисквания - изисквания, които се появяват вледствие на по-доброто разбиране за
  951. системата, което клиентът придобива по време на системното разрботване. Дизайн процесът
  952. може да разкрие нови изисквания.
  953. • Последстващи изисквания - изисквания, произтичащи от въвеждането на компютърната система
  954. – това може да промени процесите в организацията и да открие нови начини на работа, които да
  955. генерират нови изисквания.
  956. • Съвместими изисквания - изисквания, които зависят от конкретна система или бизнес процес в
  957. организацята. Ако те се променят, възникват изисквния за съвместимост.
  958. 8. Изисквания и дизайн
  959. • Изискванията определят какво трябва да прави системата, а дизайнът описва как ще го прави.
  960. • Изискванията и дизайна са неразделни – системната архитектура и дизайн структурират
  961. изискванията.
  962. 9. Графични модели
  963. • Графичните модели са най-полезни, когато се налага да се опише как се променят състояния или
  964. конкретна последователност от действия.
  965. 10. Диаграми на последователност
  966. • Показват последователност от събития, които се случват докато потребителят си взаимодейства
  967. със системата.
  968. Изводи
  969. • Изискванията определят какво трябва да прави системата и дефинират ограниченията върху
  970. нейната работа и имплементация.
  971. • Функционалните изисквания определят услугите, които системата трябва да предоставя.
  972. • Нефункционалните изисквания ограничават разработваната система и процеса на
  973. разработване.
  974. • Потребителските изисквания са твърдения на високо ниво, за това какво трябва да прави
  975. системата. Те трябва да бъдат описани на естествен език и чрез таблици и диаграми.
  976. • Системните изисквания са предназначени да комуникират функциите, които системата трябва
  977. да предостави.
  978. • Спецификацията на софтуерните изисквания е съгласувано споразумение за системните
  979. изисквания.
  980. ЕН, 2018/2019 23
  981. • IEEE стандартът е полезен като отправна точка за дефиниране на по-детайлни специфични
  982. стандарти за изисквания.
  983. Процесът на инженеринг на изискванията включва:
  984. • Проучване за осъществимост.
  985. • Идентифициране и анализ на изискванията.
  986. • Специфициране на изискванията.
  987. • Валидиране на изискванията.
  988. • Управление на изискванията.
  989. Идентифицирането и анализът на изискванията са итеративни и включват:
  990. • Разбиране за приложната област
  991. • Събиране на изискванията.
  992. • Класифициране, структуриране, приоритизиране и валидиране.
  993. • Системите имат много заинересовани лица с различни изисквания.
  994. • Изискванията се влияят от социални и организационни фактори.
  995. • Валидирането на изскванията цели да провери дали изискванията са валидни, консистентни,
  996. пълни, реалистични и верифицируеми.
  997. • Промените в бизнес средата водят до промени в изискванията.
  998. • Управлението на изискванията включва планиране и управление на промените.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement