- •1. Технология разработки программного обеспечения. Определение. Основные этапы на примере классического жизненного цикла.
- •2. Два взгляда на по: научная разработка, программное изделие. Свободное по.
- •3. Парадигмы проектирования программных систем. Макетирование.
- •4.Парадигмы проектирования пс. Инкрементная модель.
- •5. Парадигмы проектирования программных систем. Быстрая разработка приложений.
- •6. Парадигмы проектирования программных систем. Спиральная модель.
- •7. Парадигмы проектирования программных систем. Компонентно-ориентированная модель.
- •8. Парадигмы проектирования программных систем. Унифицированный процесс. Rup.
- •1. Начало
- •2. Уточнение
- •3. Построение (Конструирование)
- •4. Внедрение
- •9. Парадигмы проектирования программных систем. Экстремальное программирование.
- •10. Спецификация требований. Виды требований.
- •1) Пользовательские требования
- •2) Системные требования
- •3) Проектная системная спецификация.
- •11. Функциональные требования.
- •12. Нефункциональные требования.
- •13. Требования предметной области.
- •14. Пользовательские требования.
- •15. Системные требования.
- •16. Описание технического задания по гост.
- •17. Прецеденты. Определение. Актеры. Сценарии.
- •18. Задачи и рамки прецедентов.
- •19. Степень формализации прецедентов. Сжатый, свободный и развёрнутый формат описания.
- •20. Пояснения к прецедентам. Предусловия и постусловия. Альтернативные сценарии.
- •22. Объектно-ориентированные анализ и проектирование программных систем. Основные определения.
- •23. Основные принципы объектно-ориентированной разработки программ.
- •24. Обязанности объектов. Разложение системы на объекты. Crc-карты.
- •25. Инкапсуляция. Связность внутри классов и зацепление между классами.
- •26. Композиция и наследование. Абстрактные классы. Интерфейс класса. Рекомендации.
- •27. Методы, операции, сообщения. Разделение команд и запросов.
- •28. Проектирование по контракту. Предусловия и постусловия в методах. Инварианты.
- •29. Паттерны проектирования. Определение. Формат описания.
- •30. Виды паттернов по уровню абстракции и по цели. Примеры.
- •36. Минимальное грубое тестирование
- •37. Автоматизированные тесты. Основные определения. XUnit
- •38. Разработка через тестирование
- •39. Особенности командной разработки по
- •40. Оценка стоимости по. Модели и методики. Модель cocomo
10. Спецификация требований. Виды требований.
Требования – возможности или условия, которым должна соответствовать система или проект.
Согласно исследованиям 37% риска связаны с требованиями.
Слабое участие пользователей
Неполные требования
Изменение требований
Низкий уровень специалистов
Плохой подбор кадров
Остальное
Выделяют 3 вида требований:
1) Пользовательские требования
Описание на естественном языке функций и ограничений + поясняющие диаграммы.
Используют: менеджеры организации заказчика, конечные пользователи системы, специалисты организации заказчика, менеджеры субподрядных организаций и разработчики системной архитектуры.
2) Системные требования
Детализированное описание системных функций и ограничений (функциональная спецификация). Основа для заключения контракта между покупателями системы и разработчиками.
Используют: конечные пользователи, специалисты организации заказчика, разработчики системной архитектуры и системы.
3) Проектная системная спецификация.
Обобщенное описание структуры программной системы, служащее основой для более детального проектирования и последующей реализации. Она дополняет и детализирует системные требования.
Используют: специалисты организации заказчика (не всегда), разработчики системной архитектуры, разработчики системы.
Приведенная классификация требований выполнена по уровню детализации.
11. Функциональные требования.
Функциональные требования - перечень функций, которые должна выполнять система. Должно быть указано, как система реагирует на те или иные входные данные, как она ведет себя в определенных ситуациях. Иногда указывается чего система не должна делать.
Спецификация функциональных требований должна быть комплексной и непротиворечивой. Комплексность подразумевает описание всех функций. Непротиворечивость - отсутствие противоречивых и взаимоисключающих функций.
12. Нефункциональные требования.
Делятся на 3 группы:
требования к продукту - описание эксплуатационных свойств продукта (требования к производительности, памяти, допустимой частоте сбоев, переносимость, удобство эксплуатации.
организационные требования - отражают политику и организационные процедуры заказчика и разработчика. (стандарты разработки ПО, требования к реализации, требования по срокам изготовления, сопутствующая документация).
внешние требования. Учитывают факторы, внешние по отношению к разрабатываемой системе и процессу ее разработки. (взаимодействие данной системы с другими; юридические требования, гарантирующие правильное функционирование системы, этические требования).
Примеры:
Все взаимодействия между интерфейсом и пользователем осуществляются с помощью стандартного множества символов командного языка.
разработка системы и создание сопутствующей документации выполняются на основе стандартов ЕСПД.
Система не должна раскрывать конфиденциальную информацию о заказчике кроме его имени и номера телефона системного оператора.
Основная проблема нефункциональных требований - их сложно проверить. Часто бывает сложно реализовать требования из-за того, что они нечетко сформулированы.
Пример плохо сформулированного требования:
Система должна быть простой в эксплуатации для опытного оператора и сводить количество его ошибок к минимуму.
Такое требование надо детализировать:
Оператору должны быть доступны все системные функции после двух часов обучения. После обучения среднее число ошибок оператора не должно превышать двух за рабочий день.
Наиболее просто проверять нефункциональные требования, выраженные через количественные показатели. Кроме того жесткая фиксация требований ограничивает скорость разработки.
Типовые количественные показатели:
Скорость (количество транзакций в секунду, время реакции на действия пользователя, время обновления экрана.
Размер (мегабайт ОЗУ, кол-во модулей памяти).
Простота эксплуатации (время обучения персонала, количество статей в справочной системе).
Надежность (время между двумя последовательными появлениями ошибок в системе)
Устойчивость к сбоям (время восстановления системы после сбоя, процент событий приводящий к сбоям, вероятность порчи данных при сбое).
Переносимость (процент машинно-зависимого кода, количество машинно-зависимых подсистем).
Нефункциональные требования часто конфликтуют с другими требованиями. Функциональные и нефункциональные требования должны быть разнесены по разным разделам документа.