Software development

Этапы разработки ПО

1. Описание потребностей и их анализ
2. Дизайн программного продукта
3. Разработка
4. Проверка
5. Выпуск и внедрение продукта
6. Обслуживание продукта



Модели жизненного цикла ПО

Waterfall (каскадная модель) 
Итерационная, спиральная и инкрементная модели
Спиральная и инкрементная модели
Agile

Waterfall
Основная суть модели Waterfall в том, что этапы зависят друг от друга и следующий начинается, когда закончен предыдущий, образуя таким образом поступательное (каскадное) движение вперед. 

Минусы и плюсы

– Очень много документов
– Иллюзия безопасности и ложные впечатления
– Пользователя и заказчика полностью изолируют
– Все требования должны быть сразу известны
– Waterfall тестирование происходит только в самом конце

+ Устойчива к обновлению кадров
+ Дисциплинирует
+ Гибкая на ранних этапах
+ Прозрачна

Итерационная, спиральная и инкрементная модели

Предполагает разбиение проекта на части (этапы, итерации) и прохождение этапов жизненного цикла на каждом их них. Каждый этап является законченным сам по себе, совокупность этапов формирует конечный результат.
На каждой итерации мы работали с одним и тем же продуктом и в конце каждой итерации получали результат, которым можно пользоваться (естественно, с определенными ограничениями).
С каждым этапом разработка приближается к конечному желаемому результату или уточняются требования к результату по ходу разработки, и соответственно в любой момент текущая итерация может оказаться последней или очередной на пути к завершению.

Плюсы и минусы

+ Затраты
+ Легче получить отзывы от клиента о проделанной работе
+ У клиента имеется возможность быстро получить и освоить созданное программное обеспечение

– Прогресс не очень хорошо прослеживаемый
– Структура системы имеет тенденцию к ухудшению при добавлении новых компонентов (частей)

Спиральная и инкрементная модели

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

Плюсы

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

    Минусы
  • высокая стоимость модели за счет стоимости и дополнительных временных затрат на планирование, определение целей, выполнение анализа рисков и прототипирование при прохождении каждого цикла спирали;
  • неоправданно высокая стоимость модели для проектов, имеющих низкую степень риска или небольшие размеры;
  • усложненность структуры модели, что приводит к сложности ее использования разработчиками, менеджерами и заказчиками;
  • необходимость в высокопрофессиональных знаниях для оценки рисков;
  • возможность отдаления окончания работы над проектом в связи с желанием заказчика улучшать каждую созданную версию;
  • необходимость в обработке дополнительной документации за счет большого количества промежуточных циклов;
  • необходимость в четком распределении работ между разработчиками;
  • сложность определения критериев для продолжения процесса разработки на следующей итерации;
  • необходимость мощных инструментальных средств и методов прототипирования

Agile

Набор принципов гибкой разработки (всего их 12) и идей. Основные идеи Agile:

люди и взаимодействие важнее процессов и инструментов;
работающий продукт важнее исчерпывающей документации;
сотрудничество с заказчиком важнее согласования условий контракта;
готовность к изменениям важнее следования первоначальному плану.

Плюсы и минусы

+ тестирование на ранних стадиях
+ возможность оценки добавленного функционала “в действии”
+ исследование пользовательского опыта на всех этапах
+ возможность быстрой презентации на рынке “сырой”, но работающей версии

– отсутствие четкого плана развития проекта
– постоянная угроза переделывания большой части работы
– снижение качества продукта в угоду скорости и упрощения

Виды ошибок

Логические – работает, но результат может быть не тем
Синтакасические – выдает ошибку и не позволяет выдать результат
Семантические – неправильные объявление переменной (int a1=1, int a1=2)