Copyright © 2012 DAVID Holding Company Софтуерни проекти Софтуерни изисквания Софтуерни архитектури Планиране на проект Александър Далемски [email protected]
Jan 03, 2016
Copyright © 2012 DAVID Holding Company
Софтуерни проектиСофтуерни изискванияСофтуерни архитектури
Планиране на проект
Александър Далемски[email protected]
Copyright © 2012 DAVID Holding Company
За какво ще говорим
• Софтуерни проекти• Извличане и специфициране на изисквания• Архитектури на софтуерни системи• Планиране на софтуерни проекти
Copyright © 2012 DAVID Holding Company
Проект
• Има начало и край (ограничен е във времето)• Целта е да се създаде някакъв резултат• Проектен екип• Всеки проект, а следователно и резултатът от него, са
уникални
Copyright © 2012 DAVID Holding Company
Софтуерен проект
• Цел – създаване на специфична софтуерна система или приложение
• Бюджет• График• Екип
Copyright © 2012 DAVID Holding Company
Софтуерен процес
• Дейностите по разработката на софтуерна система• Всеки софтуерен проект се изпълнява следвайки
софтуерен процес• Определя дейности, роли, резултати
Copyright © 2012 DAVID Holding Company
Софтуерен продукт
• Софтуерна система или приложение – краен резултат от изпълнението на софтуерен проект
• Custom software• Commercial software
Copyright © 2012 DAVID Holding Company
Заинтересовани лица
• Всички, които са свързани пряко или косвено със софтуерния продукт
• Клиенти/купувачи• Потребители• Есперти в областта• Юристи
Copyright © 2012 DAVID Holding Company
Софтуерни изисквания
• Събират се в началото на изпълнението на проекта• Ръководят проектирането, реализацията и тестването
Copyright © 2012 DAVID Holding Company
Видове изисквания
• Бизнес изисквания• Изисквания към процеса• Изисквания към продукта
Copyright © 2012 DAVID Holding Company
Изисквания към продукта
• Функционални изисквания• Нефункционални изисквания• Изисквания на предметната област
Copyright © 2012 DAVID Holding Company
Събиране и специфициранена изискванията• Много начини за събиране – интервюта, анкети, фокус
групи, допитване до експерти в областта, проучване на сходни системи...
• Често си противоречат• Трябва да се постигне компромис• Формулират се в спецификация
Copyright © 2012 DAVID Holding Company
Спецификация на изискванията(Software Requirements Specification – SRS)• Описват се всички изисквания• Проверява се за неточности и пропуски• Важно е проблемите да се отстранят максимално рано в
процеса
Copyright © 2012 DAVID Holding Company
Формулиране на изискванията
• Ясно и точно• Консистентно (без противоречия)• Без повторения• Без сложни (комбинирани) изисквания• Да позволява проверка за изпълнението на изискването
Copyright © 2012 DAVID Holding Company
Софтуерни архитектури
• Често използвани шаблони• Могат да се комбинират• Покриват определен клас проблеми• Предимства и недостатъци
Copyright © 2012 DAVID Holding Company
Клиент-сървър архитектура (Client-Server)
• Нееднородна• Обикновено един сървър• Много клиенти• Клиентът инициира връзката със сървъра• Централизиран достъп до данните
Copyright © 2012 DAVID Holding Company
Трислойна архитектура (Three-Tier)
• Три слоя – за данни, бизнес и презентационен• Изолира всеки слой от реализацията на останалите• Улеснява тестването и поддръжката• Ограничава обхвата на нужните промени• Много широко разпространена
Copyright © 2012 DAVID Holding Company
Многослойна архитектура (n-Tier)
• Подобна на трислойната• Множество слоеве• Разделяне на отговорността (separation of concerns)• Локализиране на промените
Copyright © 2012 DAVID Holding Company
Peer-to-Peer архитектура
• Обикновено еднородна• Липса на централизираност• По-висока надеждност• По-ниска сигурност на данните• По-сложна реализация
Copyright © 2012 DAVID Holding Company
Event-Driven архитектура
• Събития• Абониране• Компонентите, които предоставят услугите/събитията,
инициират действията
Copyright © 2012 DAVID Holding Company
Архитектура с обмяна на съобщения(Message Passing)• Pipes & Filters• Съобщения• Канали/опашки• Обработващи звена
Copyright © 2012 DAVID Holding Company
Архитектура с общо хранилище(Shared Repository)• Общо хранилище за данни• Липса на преки взаимодействия между компонентите• Комуникация чрез хранилището
Copyright © 2012 DAVID Holding Company
Архитектура с разпределяне на товара(Load Balancing)• Дублиране на еднакви звена• Разпределяне на заявките/натоварването• Load balancer• Допълнителна надеждност – резервни звена
Copyright © 2012 DAVID Holding Company
Архитектура, ориентирана към услуги(Service-Oriented Architecture – SOA)• Описан набор от услуги• Съобщения• Клиенти – обикновено външни системи• Обикновено през HTTP• SOAP, WSDL и UDDI
Copyright © 2012 DAVID Holding Company
Модел на софтуерен процес
• Шаблон, описващ фазите на процеса, дейностите, ролите и ресултатите от всяка фаза
• Съществуват много модели• Ориентирани към различни видове проекти
Copyright © 2012 DAVID Holding Company
Ad-hoc модел
• Липса на специфичен план• Решенията се вземат на място• Сполучлив за малки непрофесионални проекти• Много висок риск от провал при сериозни проекти
Copyright © 2012 DAVID Holding Company
Модел на водопада (Waterfall Model)
• Фази: извличане на изисквания, проектиране, разработка, тестване, внедряване
• Не е възможно връщане към предишна фаза• Не се справя добре с промени в изискванията в късен
етап от проекта
Copyright © 2012 DAVID Holding Company
Спираловиден модел (Spiral Model)
• Прилагане на модела на водопада множество пъти• Всеки цикъл започва със специфициране на изисквания,
продължава с проектиране, разработка и тестване• Продължава до достигане на завършен вид• Позволява адаптация към промени в изискванията
Copyright © 2012 DAVID Holding Company
Прототипен модел (Prototype Model)
• Бърза разработка на прототип в началото на проекта• Proof of concept• Откриване на потенциални проблеми и рискове• Throwaway прототипи• Еволюционни прототипи
Copyright © 2012 DAVID Holding Company
Итеративен модел (Iterative Model)
• Комбиниране на спираловидния и прототипния модели• В края на всяка итерация трябва да се получи работеща
версия на крайния продукт• Може да се добавят отделни пълни модули, или да се
започне с непълни модули и те да се доразвиват
Copyright © 2012 DAVID Holding Company
Agile разработка
• Традиционните модели на софтуерни процеси изразходват твърде много време и пари за документация и формалности
• Agile подходите минимизират излишните дейности• Множество различни Agile подходи
Copyright © 2012 DAVID Holding Company
Сходни черти на Agile подходите
• Постоянна пряка комуникация със заинтересованите лица
• Минимална употреба на сложни инструменти и излишна документация
• Кратки цикли (спринтове)• Бърза реакция при промени в изискванията• Ограничават се страничните дейности
Copyright © 2012 DAVID Holding Company
Полезни връзки
• Софтуерно инженерство – Software Engineering by Ian Sommerville, http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/
• Agile разработка - http://www.agilealliance.org/