Этапы разработки ПО
1. Описание потребностей и их анализ
2. Дизайн программного продукта
3. Разработка
4. Проверка
5. Выпуск и внедрение продукта
6. Обслуживание продукта
Модели жизненного цикла ПО
Waterfall (каскадная модель)
Итерационная, спиральная и инкрементная модели
Спиральная и инкрементная модели
Agile
Waterfall
Основная суть модели Waterfall в том, что этапы зависят друг от друга и следующий начинается, когда закончен предыдущий, образуя таким образом поступательное (каскадное) движение вперед.

Минусы и плюсы
— Очень много документов
— Иллюзия безопасности и ложные впечатления
— Пользователя и заказчика полностью изолируют
— Все требования должны быть сразу известны
— Waterfall тестирование происходит только в самом конце
+ Устойчива к обновлению кадров
+ Дисциплинирует
+ Гибкая на ранних этапах
+ Прозрачна
Итерационная, спиральная и инкрементная модели
Предполагает разбиение проекта на части (этапы, итерации) и прохождение этапов жизненного цикла на каждом их них. Каждый этап является законченным сам по себе, совокупность этапов формирует конечный результат.
На каждой итерации мы работали с одним и тем же продуктом и в конце каждой итерации получали результат, которым можно пользоваться (естественно, с определенными ограничениями).
С каждым этапом разработка приближается к конечному желаемому результату или уточняются требования к результату по ходу разработки, и соответственно в любой момент текущая итерация может оказаться последней или очередной на пути к завершению.

Плюсы и минусы
+ Затраты
+ Легче получить отзывы от клиента о проделанной работе
+ У клиента имеется возможность быстро получить и освоить созданное программное обеспечение
— Прогресс не очень хорошо прослеживаемый
— Структура системы имеет тенденцию к ухудшению при добавлении новых компонентов (частей)
Спиральная и инкрементная модели
Все этапы жизненного цикла при спиральной модели идут витками, на каждом из которых происходят проектирование, кодирование, дизайн, тестирование и т. д. Такой процесс отображает суть названия: поднимаясь, проходится один виток (цикл) спирали для достижения конечного результата. Причем не обязательно, что один и тот же набор процессов будет повторятся от витка к витку. Но результаты каждого из витков ведут к главной цели.

Плюсы
- наличие действий по анализу рисков, что обеспечивает их сокращение и заблаговременное определение непреодолимых рисков;
- обеспечение разбиения большого потенциального объема работ по выполнению проекта на небольшие части;
- первоочередность реализации решающих функций с высокой степенью риска, что позволяет при необходимости остановить работы над проектом на ранних циклах модели и уменьшить расходы;
- возможность гибкого проектирования, основанная на преимуществах каскадной модели при одновременном разрешении итераций;
- реализация преимуществ инкрементной модели (выпуск инкрементов, сокращение графика работ, неизменяемость ресурсов при постепенном росте системы);
- реализация связи с пользователем с высокой частотой и на ранних этапах модели, что обеспечивает создание нужного продукта высокого качества;
- возможность оценки системы пользователем на ранних этапах, за счет использования в жизненном цикле разработки ускоренного прототипирования;
- возможность пользователям принимать участие при планировании, анализе рисков, проектировании, разработке, выполнении оценочных действий;
- усовершенствование административного управления процессами жизненного цикла разработки, затратами, соблюдением графика и кадровым обеспечением, что достигается путем выполнения анализа (обзора) в конце каждой итерации;
- повышение производительности за счет использования пригодных для повторного использования результатов;
- повышение вероятности предсказуемого поведения системы с помощью уточнения поставленных целей;
- отсутствие необходимости в предварительном распределении всех нужных для выполнения проекта финансовых ресурсов;
- возможность регулярной оценки совокупных затрат, что в результате приводит к их общему сокращению.
Минусы - высокая стоимость модели за счет стоимости и дополнительных временных затрат на планирование, определение целей, выполнение анализа рисков и прототипирование при прохождении каждого цикла спирали;
- неоправданно высокая стоимость модели для проектов, имеющих низкую степень риска или небольшие размеры;
- усложненность структуры модели, что приводит к сложности ее использования разработчиками, менеджерами и заказчиками;
- необходимость в высокопрофессиональных знаниях для оценки рисков;
- возможность отдаления окончания работы над проектом в связи с желанием заказчика улучшать каждую созданную версию;
- необходимость в обработке дополнительной документации за счет большого количества промежуточных циклов;
- необходимость в четком распределении работ между разработчиками;
- сложность определения критериев для продолжения процесса разработки на следующей итерации;
- необходимость мощных инструментальных средств и методов прототипирования
Agile
Набор принципов гибкой разработки (всего их 12) и идей. Основные идеи Agile:
люди и взаимодействие важнее процессов и инструментов;
работающий продукт важнее исчерпывающей документации;
сотрудничество с заказчиком важнее согласования условий контракта;
готовность к изменениям важнее следования первоначальному плану.

Плюсы и минусы
+ тестирование на ранних стадиях
+ возможность оценки добавленного функционала “в действии”
+ исследование пользовательского опыта на всех этапах
+ возможность быстрой презентации на рынке “сырой”, но работающей версии
— отсутствие четкого плана развития проекта
— постоянная угроза переделывания большой части работы
— снижение качества продукта в угоду скорости и упрощения
Виды ошибок
Логические — работает, но результат может быть не тем
Синтакасические — выдает ошибку и не позволяет выдать результат
Семантические — неправильные объявление переменной (int a1=1, int a1=2)