Понятие жизненного цикла ПО
В первой лекции говорилось о том, что сложную программную систему построить «простыми» методами невозможно. Ее разработка с неизбежностью будет тоже сложной деятельностью.
Привести такое предприятие к успеху возможно на основе общих принципов работы со сложными системами: организовав его в виде набора модулей, используя разные уровни абстракции, переиспользуя отдельные элементы в разных местах так, чтобы изменения в таком элементе автоматически отражались всюду, где он используется.
Разработка ПО — разновидность человеческой деятельности. Выделить ее компоненты можно, определив набор задач, которые нужно решить для достижения конечной цели — построения достаточно качественной системы в рамках заданных сроков и ресурсов. Для решения каждой такой задачи организуется вспомогательная деятельность, к которой можно также применить декомпозицию на отдельные, более мелкие деятельности, и т.д. В итоге должно стать понятно, как решать каждую отдельную подзадачу и всю задачу целиком на основе имеющихся решений для подзадач.
В качестве примеров деятельностей, которые нужно проводить для построения программной системы, можно привести проектирование — выделение отдельных модулей и определение связей между ними с целью минимизации зависимостей между частями проекта и достижения лучшей его обозримости в целом, кодирование — разработку кода отдельных модулей, разработку пользовательской документации, которая необходима для достаточно сложной системы.
Однако для корректного с точки зрения инженерии и экономики рассмотрения вопросов создания сложных систем необходимо, чтобы были затронуты и вопросы эксплуатации системы, внесения в нее изменений, а также самые первые действия в ходе ее создания — анализ потребностей пользователей и выработка решений, «изобретение» функций, удовлетворяющих эти потребности. Без этого невозможно, с одной стороны, учесть реальную эффективность системы в виде отношения полученных результатов ко всем сделанным затратам и, с другой стороны, правильно оценивать в ходе разработки степень соответствия системы реальным нуждам пользователей и заказчиков.
Все эти факторы приводят к необходимости рассмотрения всей совокупности деятельностей, связанных с созданием и использованием ПО, начиная с возникновения идеи о новом продукте и заканчивая удалением его последней копии. Весь период существования ПО, связанный с подготовкой к его разработке, разработкой, использованием и модификациями, начиная с того момента, когда принимается решение разработать/приобрести/собрать из имеющихся компонентов новую систему или приходит сама идея о необходимости программы определенного рода, до того момента, когда полностью прекращается всякое ее использование, называют
жизненным циклом ПО.
- Предисловие
- Лекция 1. Проблемы разработки сложных программных систем
- Программы «большие» и «маленькие»
- Принципы работы со сложными системами
- Литература к Лекции 1
- Лекция 2. Жизненный цикл и процессы разработки ПО
- Понятие жизненного цикла ПО
- Модели жизненного цикла
- «Тяжелые» и «легкие» процессы разработки
- Унифицированный процесс Rational
- Экстремальное программирование
- Лекция 4. Анализ предметной области и требования к ПО
- Анализ предметной области
- Выделение и анализ требований
- Литература к Лекции 4
- Лекция 5. Качество ПО и методы его контроля
- Качество программного обеспечения
- Методы контроля качества
- Ошибки в программах
- Лекция 6. Архитектура программного обеспечения
- Анализ области решений
- Архитектура программного обеспечения
- Разработка и оценка архитектуры на основе сценариев
- Литература к Лекции 6
- Лекция 7. Образцы проектирования
- Образцы человеческой деятельности
- Многоуровневая система
- Литература к Лекции 7
- Лекция 8. Образцы проектирования (продолжение)
- Данные–представление–обработка
- Идиомы
- Шаблонный метод
- Образцы организации и образцы процессов
- Литература к Лекции 8
- Понятность
- Методы разработки удобного программного обеспечения
- Лекция 10. Основные конструкции языков Java и C#
- Платформы Java и .NET
- Целочисленные типы
- Инструкции и выражения
- Выражения
- Наследование
- Шаблонные типы и операции
- Описание метаданных
- Средства создания многопоточных программ
- Основные понятия компонентных технологий
- Общие принципы построения распределенных систем
- Лекция 13. Компонентные технологии разработки Web-приложений
- Web-приложения
- Платформа Java 2 Enterprise Edition
- Именование
- Работа с XML
- Отказоустойчивость
- Защита
- Работа с XML
- Литература к Лекции 13
- Уровень бизнес-логики и модели данных в J2EE
- Компоненты, управляемые сообщениями
- Уровень модели данных в .NET
- Уровень пользовательского интерфейса в J2EE
- Уровень пользовательского интерфейса в .NET
- Лекция 15. Развитие компонентных технологий
- Развитие технологий J2EE
- Java Data Objects
- Enterprise Java Beans 3.0
- Среда Spring
- Защита
- Литература к Лекции 15
- Лекция 16. Управление разработкой ПО
- Задачи управления проектами
- Окружение проекта
- Структура организации-исполнителя проекта
- Управление рисками