Programmeerimine

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

  1. Описание потребностей и их анализ

2. Дизайн программного продукта

3. Разработка

4. Проверка

5. Выпуск и внедрение продукта

6. Обслуживание продукта


Waterfall

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

Плюсы

Минусы

 Устойчива к обновлению кадров.

Дисциплинирует.

Гибкая на ранних этапах.

Прозрачна.

Очень много документов

Иллюзию безопасности и ложные впечатления

Пользователя и заказчика полностью изолируют от процесса разработки.

 Все требования должны быть сразу известны.

Тестирование происходит только в самом конце. 


Итерационная модель

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

Плюсы

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

Эффективно универсален для постоянно меняющихся требований проекта, а также клиента.

Подходит для проворных компаний.

По разумной цене можно изменить диапазон спецификаций.

Совместное развитие может быть организовано.

Изучение и устранение неполадок, в то время как меньше итераций просто.

Опасности распознаются и исправляются путем итерации, и каждая итерация может быть просто обработана.

В модели итерации сжатое время расходуется на запись, а расширенное время предоставляется для обрисовки.

Минусы

Могут потребоваться расширенные ресурсы.

Несмотря на то, что цена изменения ниже, она не всегда соответствует спецификациям изменения.

Требуется дополнительное признание администрации.

Это не подходит для более коротких проектов.

Для экспертизы способностей требуются чрезвычайно опытные ресурсы.

Продвижение проекта в значительной степени зависит от этапов оценки рисков.


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

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

Плюсы

Снижение воздействия серьёзных рисков на ранних стадиях проекта, что ведет к минимизации затрат на их устранение.

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

Акцент усилий на наиболее важные и критичные направления проекта.

Непрерывное итеративное тестирование, позволяющее оценить успешность всего проекта в целом.

Раннее обнаружение конфликтов между требованиями, моделями и реализацией проекта.

Более равномерная загрузка участников проекта.

Эффективное использование накопленного опыта.

Реальная оценка текущего состояния проекта и, как следствие, большая уверенность заказчиков и непосредственных участников в его успешном завершении.

Затраты распределяются по всему проекту, а не группируются в его конце.

Минусы

Высокая стоимость модели за счет стоимости и дополнительных временных затрат на планирование, определение целей, выполнение анализа рисков и прототипирование при прохождении каждого цикла спирали.

Неоправданно высокая стоимость модели для проектов, имеющих низкую степень риска или небольшие размеры.

Усложненность структуры модели, что приводит к сложности ее использования разработчиками, менеджерами и заказчиками.

Необходимость в высокопрофессиональных знаниях для оценки рисков.

Возможность отдаления окончания работы над проектом в связи с желанием заказчика улучшать каждую созданную версию.

Необходимость в обработке дополнительной документации за счет большого количества промежуточных циклов.

Необходимость в четком распределении работ между разработчиками.

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

Необходимость мощных инструментальных средств и методов прототипирования.


Инкреметная модель

Инкрементная модель — это метод, в котором проект проектируется, реализуется и тестируется инкрементно (то есть каждый раз с небольшими добавлениями) до самого окончания разработки. Это включает в себя как разработку, так и дальнейшую поддержку продукта. Он считается законченным в то время, когда удовлетворяет всем требованиям. Модель объединяет элементы каскадной модели с прототипированием.

Плюсы

Рабочее приложение выходит на ранней стадии жизненного цикла продукта.

Гибкость. Изменить масштабы и требования проекта относительно менее затратно.

Небольшие итерации упрощают тестирование и внесение правок.

Проще идентифицировать риски, справиться с ними.

Каждая итерация — простая в управлении контрольная точка проекта.

Минусы

Каждая фаза итерации неподвижна

Могут возникнуть проблемы относительно архитектуры системы, так как не все требования собраны заранее для всего жизненного цикла ПО


Agile

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

Плюсы

Тестирование на ранних стадиях.

Возможность оценки добавленного функционала “в действии”.

Исследование пользовательского опыта на всех этапах.

Возможность быстрой презентации на рынке “сырой”, но работающей версии.

Минусы

Отсутствие четкого плана развития проекта.

Постоянная угроза переделывания большой части работыю

Снижение качества продукта в угоду скорости и упрощения.


Проверка/Тестирование

  • Белый ящик — программист
  • Черный ящик — клиент/пользователь
  • Серый ящик — спец. человек/тестировщик

По обьекту тестирования


Типы ошибок тестирования

  • Логические
  • Синтаксические
  • Семантические

Виды программирования

Деклатративное

Императированое

Cтруктурное

Функциональное

Логическое

Объектно-ориентированное программирование

Прототипное программирование


Алгоритм

Свойства алгоритмов

  • Дискретность
  • Понятность
  • Однозначность
  • Массовость
  • Результативность
  • Правильность

Виды алгоритмов

  • Линейный
  • Разветвляющийся
  • Циклический

Условные графические обозначения символов


Переменные

Простые типы

..


Схемы