- •Министерство образования республики беларусь
- •Белорусский государственный университет
- •Факультет прикладной математики и информатики
- •Кафедра технологий программирования
- •Жизненный цикл проекта
- •Характеристики фаз проекта
- •Описание основных фаз проекта:
- •Инициация проекта
- •Характеристики жизненного цикла проекта
- •Современные процессы разработки программного обеспечения.
- •Выбор методологии
- •Жесткие методологии Модель водопада
- •Итеративная разработка
- •Спиральная модель
- •Гибкие методологии
- •Выбор архитектуры решения
- •Вычислительные системы
- •Операционные системы
- •Классификация операционных систем
- •Особенности областей использования
- •Менеджмент проектов
- •2. Команда менеджмента проекта
- •2.1. Команды в проекте
- •2.2. Соотношение между различными командами в проекте
- •2.3. Цели кмп в проекте
- •3. Создание и развитие кмп
- •3.1. Сущность и характеристики кмп
- •С позиции системного подхода:
- •С позиции психологическогой подхода:
- •С позиции проектного подхода:
- •Управление трудовыми ресурсами проекта и менеджмент человеческих ресурсов проекта
- •3.3. Интегрированная культура кмп
- •4. Оценка деятельности кмп
- •4.1. Что такое эффективная кмп?
- •4.2. Команда Менеджмента Проекта – критический фактор успеха проекта
- •Парадигмы программирования
- •Структурное программирование
- •1. Основные предпосылки структурного программирования
- •2. Цели и задачи структурного программирования
- •3. Реализация структурного программирования
- •Событийно-ориентированное программирование
- •Обработка событий
- •Сферы применения
- •Перспективы
- •Недостатки
- •Объектно-ориентированное программирование
- •Особенности реализации
- •Достоинства ооп
- •Функциональное программирование
- •Концепции
- •Рекурсия
- •Функции высших порядков
- •Аспектно-ориентированное программирование
- •Преимущества использования аоп
- •Недостатки аспектного подхода
- •Визуально-ориентированное программирование
- •Другие парадигмы Процедурное (императивное) программирование
- •Автоматное программирование
- •Логическое программирование.
- •Качество кода Рефакторинг
- •Разумные причины выполнения рефакторинга
- •Когда не следует выполнять рефакторинг
- •Безопасный рефакторинг
- •Документирование
- •Внешняя документация
- •Внутренняя документация
- •Комментарии Комментировать или не комментировать?
- •Виды комментариев
- •Обработка исключений
- •Некоторые предложения по реализации исключений:
- •Архитектура программного обеспечения
- •История
- •Отличие архитектуры по от детального проектирования по
- •Примеры архитектурных стилей и моделей
- •Паттерны проектирования
- •Шаблон AbstractFactory
- •Шаблон Builder
- •Шаблон Bridge
- •Паттерны проектирования классов/обьектов
- •Архитектурные системные паттерны
- •Структурные паттерны
- •Паттерны, обеспечивающие взаимодействие с базой данных
- •Структурные паттерны интеграции
- •Паттерны по методу интеграции
- •Тестирование программного обеспечения Классификация видов тестирования
- •Уровни тестирования
- •Модульное тестирование
- •Интеграционное тестирование
- •Системное тестирование программного обеспечения
- •Функциональное тестирование
- •Регрессионное тестирование
- •Верификационные тесты (Verification Test).
- •Нагрузочное тестирование
- •Тестирование «белого ящика» и «чёрного ящика»
- •Поддержка по. Контроль версий Сопровождение программного обеспечения
- •Возраст и структура программы
- •Процесс сопровождения
- •Прогнозирование сопровождения
- •Управление изменениями
- •Процесс управления изменениями
- •Управление версиями и выпусками
- •Идентификация версий
- •Нумерация версий
- •Идентификация, основанная на значениях атрибутов
- •Идентификация на основе изменений
- •Средства поддержки управления изменениями
- •Средства поддержки управления версиями
- •История
- •Немного о продуктах компании
- •О новинках Облачные вычиления
- •Новые операционные системы
- •Другие разработки
- •Интересные факты
- •Как всё начиналось
- •Настоящее время
- •Позиции на мировом рынке
- •Новые продукты Oracle Новые продукты в области субд
- •Новые продукты в области связующего программного обеспечения
- •Инновации в области управления эффективностью предприятия и бизнес-анализа
- •Новые версии бизнес-приложений и отраслевых решений
- •Разработки компании Apple
- •На чем написан mac os?
- •Особенности Mac
- •История создания Google
- •Индустрия игр.
- •Компьютерные игры. История.
- •Компьютерные игры. Тенденции.
- •Компьютерные игры. Компании.
- •Компьютерные игры. Online.
- •Стандартные приложения Android
- •Разработка программного обеспечения
- •Разработки, происходящии на данный момент
- •Уникальность Android
- •Недостатки Android
- •Позиции на мировом рынке
- •Почему мобильный Windows непопулярен?
- •“Нужно перестать делать телефон центром вашей жизни, пускай ваша жизнь станет центром для телефона”
- •Целевая аудитория:
- •Особенности интерфейса
- •Общие положения
- •Неполная многозадачность
- •Разработка игр и приложений
- •Заключение
- •Сетевые операционные системы Структура сетевой операционной системы
- •Одноранговые сетевые ос и ос с выделенными серверами
- •Примеры серверных ос
- •Роли Active Directory
- •Пользовательские unix-системы
- •Основные пользовательские unix и unix-подобные ос
- •Облачные вычисления
- •Примеры
- •Любой ли сервис по запросу есть облако?
- •Нужны ли облака?
- •Внешние и внутренние облака
- •Какие услуги предоставляются в рамках модели облачных вычислений?
- •Сколько стоят вычисления в облаках?
- •Каковы гарантии того, что облако всегда будет на связи?
- •Проблемы облачных технологий
- •Как минимизировать риски при переходе на облачные вычисления?
- •Безопасность
- •Технология
- •Перспективы
- •Технология Rich Internet Application. Платформы для разработки ria.
- •Преимущества
- •Недостатки
- •Введение в аsр.Nет
- •История asp.Net
- •Принципы asp.Net
- •Компилируемый код выполняется быстрее, большинство ошибок отлавливается ещё на стадии разработки
- •Asp.Net имеет преимущество в скорости по сравнению с другими технологиями, основанными на скриптах. Возможности asp.Net
- •Оттранслированные программы
- •Элементы управления сервера
- •Независимость кода от браузеров
- •Отделение кода от содержимого
- •Управление состоянием
- •Управление состоянием в аsр.Nет
- •Искусственный интеллект
- •Предпосылки развития науки искусственного интеллекта
- •Подходы и направления
- •Тест Тьюринга
- •Символьный подход
- •Логический подход
- •Накопление и использование знаний
- •Суть процесса искусственного мышления
- •Применение
- •Перспективы
- •Искусственный интеллект в играх
- •Нейронные сети
- •Возможные способы применения и реализации
- •Категории аппаратного обеспечения инс
- •Цифровое исполнение
- •Аналоговое исполнение
- •Гибридное исполнение
- •Области применения нейронных сетей
- •Классификация угроз безопасности Web-приложений
- •Мировой рынок экспортного программирования
- •Прогноз развития мирового и российского рынка
- •Белорусские компании
- •Каким может быть аутсорсинг
- •Авторское право по как объект авторского права
- •Права автора Личные неимущественные права:
- •Личные имущественные права:
- •Способы защиты авторского права
- •Нарушение авторских прав
- •Типы лицензий
- •Пиратское по
- •Взгляд в будущее
- •Защита от несанкционированного копирования Введение
- •Организационные меры защиты
- •Защита при помощи компьютерных компакт-дисков
- •Методы взлома/обхода технических мер защиты
- •Проблема «лучше, чем легальное»
- •Классы атак Аутентификация (Authentication)
- •Авторизация (Authorization)
- •Атаки на клиентов (Client-side Attacks)
- •Выполнение кода (Command Execution)
- •Разглашение информации (Information Disclosure)
- •Логические атаки (Logical Attacks)
- •Компьютерные вирусы
- •Классификация вирусов
- •Топ 10 вирусов
- •Антивирусные программы
- •Методы обнаружения вирусов
- •Метод соответствия определению вирусов в словаре
- •Метод обнаружения странного поведения программ
- •Метод обнаружения при помощи эмуляции
- •Метод «Белого списка»
- •Эвристический анализ
Поддержка по. Контроль версий Сопровождение программного обеспечения
Сопровождение — это обычный процесс изменения системы после ее поставки заказчику. Сопровождение не связано со значительным изменением архитектуры системы.
Существует три вида сопровождения системы:
Сопровождение с целью исправления ошибок. Обычно ошибки в программировании достаточно легко устранимы, однако ошибки проектирования стоят дорого и требуют корректировки или перепрограммирования некоторых компонентов. Самые дорогие исправления связаны с ошибками в системных требованиях, так как здесь может понадобиться перепроектирование системы.
Сопровождение с целью адаптации ПО к специфическим условиям эксплуатации. Это может потребоваться при изменении определенных составляющих рабочего окружения системы, например аппаратных средств, операционной системы или программных средств поддержки. Чтобы адаптироваться к этим изменениям, система должна быть подвергнута определенным модификациям.
Сопровождение с целью изменения функциональных возможностей системы. В ответ па организационные или деловые изменения в организации могут измениться требования к программным средствам. В таких случаях применяется данный тип сопровождения. Наиболее существенные изменения при этом претерпевает именно программное обеспечение.
На практике однозначно четкое разграничение между различными видами сопровождения провести достаточно сложно. Ошибки в системе могут быть выявлены в том случае, если, например, система использовалась непредсказуемым способом. Поэтому наилучший способ исправления ошибок — расширение функциональных возможностей программы с тем, чтобы сделать работу с ней как можно проще. При адаптации программного обеспечения к новому рабочему окружению расширение функциональных возможностей системы будет способствовать улучшению ее работы. Также добавление определенных функций в программу может оказаться полезным, если в случае ошибок был изменен шаблон использования системы и побочным действием при расширении функциональных возможностей будет удаление ошибок.
Согласно исследованиям, 65% сопровождения связано с выполнением новых требований, 18% отводится на изменения системы с целью адаптации к новому окружению и 17% связано с исправлением ошибок.
Из этого можно определить, что исправление ошибок не является самым распространенным видом сопровождения. Модернизация системы в соответствии с новым рабочим окружением либо в соответствии с новыми требованиями более эффективна. Поэтому сопровождение само по себе является естественным процессом продолжения разработки системы со своими процессами проектирования, реализации и тестирования. Таким образом, спиральная модель, лучше представляет процесс развития ПО, чем каскадная модель, где сопровождение рассматривается как отдельный процесс (в спиральной модели сопровождение не выделяется в отдельную фазу, но тем не менее эта деятельность занимает значительное место, если учитывать тот факт, что процесс сопровождения занимает 2/3 жизненного цикла таких программных систем).
Значительная часть бюджета большинства организаций уходит на сопровождение ПО, а не на само использование программных систем. В 1980-х годах было обнаружено, что во многих организациях по меньшей мере 50% всех средств, потраченных на программирование, идет на развитие уже существующих систем. Так как предприятия заменяют старые системы коммерческим ПО, например программами планирования ресурсов, эти цифры никак не будут уменьшаться. Поэтому можно утверждать, что изменение ПО все еще остается доминирующим в статье затрат организаций на программное обеспечение.
Соотношение между величинами средств на сопровождение и на разработку может быть разным в зависимости от предметной области, где эксплуатируется система. Для прикладных систем, работающих в деловой сфере, соотношение затрат на сопровождение в основном сравнимо со средствами, потраченными на разработку. Для встроенных систем реального времени затраты па сопровождение могут в четыре раза превышать стоимость самой разработки. Высокие требования в отношении производительности и надежности таких систем предполагают их жесткую структуру, которая труднее поддается модификации.
Можно получить значительную общую экономию средств, если заранее потратить финансы и усилия на создание системы, не требующей дорогостоящего сопровождения. Весьма затратно проводить изменения в системе после ее поставки заказчику, поскольку для этого требуется хорошо знать систему и провести анализ реализации этих изменений. Поэтому усилия, потраченные во время разработки программы на снижение стоимости такого анализа, автоматически снизят и затраты на сопровождение. Такие технологии разработки ПО, как формирование четких требований, объектно-ориентированное программирование и управление конфигурацией, способствуют снижению стоимости сопровождения.
Причиной высоких затрат на сопровождение является сложность модернизации системы после ее внедрения, поскольку расширить функциональные возможности намного легче в процессе создания системы. Ключевые факторы, которые определяют стоимость разработки и сопровождения и могут привести к подорожанию сопровождения.
Стабильность команды разработчиков. Вполне естественно, что после внедрения системы команда разработчиков распадается, специалисты будут работать над другими проектами. Новым членам команды или же отдельным специалистам, которые возьмут на себя дальнейшее сопровождение системы, будет трудно попять все ее особенности. Поэтому на понимание системы перед внесением в нее изменений уходит много времени и средств.
Ответственность согласно контракту. Контракт на сопровождение обычно заключается отдельно от договора на разработку программы. Более того, часто контракт на сопровождение может получить фирма, сама не занимающаяся разработкой. Вместе с фактором нестабильности команды это может стать причиной отсутствия в команде стимула создать легкоизменяемую, удобную в сопровождении систему.
Квалификация специалистов. Специалисты, занимающиеся сопровождением, часто не знакомы с предметной областью, где эксплуатируется система. Сопровождение не пользуется популярностью среди разработчиков. Это считается менее квалифицированной разработкой и часто поручается младшему персоналу. Более того, старые системы могут быть написаны на устаревших языках программирования, не знакомых молодым специалистам и требующих дополнительного изучения.
