Какой процесс разработки программного обеспечения вы используете?[закрыто]

StackOverflow https://stackoverflow.com/questions/121839

  •  02-07-2019
  •  | 
  •  

Вопрос

Я всегда использовал гибкую Разработка, основанная на функциях процесс разработки программного обеспечения.Что используют все остальные и почему вы предпочитаете это?Я предпочитаю FDD, потому что с этого я начал сразу после окончания колледжа.В колледже все было очень свободно, и моим «клиентом» обычно был мой профессор, у которого, возможно, не было большого опыта работы в отрасли, кроме проведения исследований для университета.

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

Это было полезно?

Решение

В работе мы используем процесс ICONIX.Это подмножество методов AGILE, основанное на поведенческих требованиях.Процесс ICONIX стремится быть как можно менее примечательным и иметь как можно меньше документации, чтобы вы могли легко поддерживать его в актуальном состоянии (это большое отличие от других процессов AGILE, например, практикующие XP часто так делают). похоже, не поддерживают актуальность документации после первого черновика, утверждая, что их код является документацию).

Вот практический обзор процесса:

  1. Быстрый проект функциональных требований
  2. Быстрое определение доменной модели
  3. Модельные варианты использования на основе предыдущих этапов
  4. Необязательно - нарисуйте диаграмму устойчивости к качеству для каждого варианта использования, просто чтобы понять отношения между вашим классом
  5. Нарисуйте диаграмму последовательности для каждого варианта использования
  6. Смоделируйте свои тестовые сценарии на основе вариантов использования.
  7. Осуществлять
  8. Тест

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

  • Диаграмма вариантов использования
  • Диаграмма последовательности для каждого варианта использования
  • Диаграмма тестового примера (или план тестирования)

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

Ресурсы:

Веб-сайт процесса Iconix

Веб-сайт Iconix по разработке программного обеспечения

Ссылки на книги:

AGILE-разработка с использованием процесса ICONIX

Другие советы

Гибкие методологии разработки с сочетанием инженерных практик XP:

  • TDD в сочетании с рефакторингом
  • Ягни (Тебе это не понадобится)
  • ПОЦЕЛУЙ (Будь проще, глупый)
  • Рефакторинг с использованием шаблонов проектирования
  • Парное программирование с переключением пар
  • Общая база кода
  • Развертывайте как можно раньше и чаще

Чего бы ни требовал текущий проект.

В свободное время я много консультирую различные веб-разработчики (в основном основанные на PHP).Я еще не уделил времени TDD для этих проектов, и многие из них используют существующие платформы, которые на самом деле не делают TDD таким уж простым.

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

Кажется, здесь есть некоторая путаница:

TDD больше о том, как вы осуществлять кода, а не об управлении общей разработкой программного проекта.TDD не поможет вам решить, какие функции запланировать, когда реализовать или как установить приоритеты.

Напротив, такие вещи, как Lean/Agile или даже Waterfall, касаются проблем более высокого уровня.(Я голосую за Scrum, который твердо относится к области Lean/Agile.)

XP (экстремальное программирование) интересен тем, что сочетает в себе идеи обеих этих областей.

я иду с Гибкий Скрам, Это дает мне ощущение связи с командой.И иметь хороший контроль над этапами и индивидуальными задачами. Утренние схватки очень полезны.Мы используем Шаблон проекта Agile Scrum в Team System http://www.scrumforteamsystem.com/en/default.aspx

Наверное, я старая школа.Разрабатываю по спецификациям клиента.Энергичная фаза проектирования, за которой следует цикл разработки, тестирования и исправления ошибок.Затем реализуйте.

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

Я пришел к выводу, что почти все мои клиенты за последние 10 лет около 90% вещей, которые они «добавляли» во время разработки, создавая расширение масштабов, считаются ненужными.Я не могу сказать вам, сколько клиентов поблагодарили меня за то, что я держал их в страхе.Так что я не знаю, как бы вы это назвали, но это работает для меня и многих других разработчиков, которых я знаю.

я фанат Бережливая разработка программного обеспечения, которую продвигает семья Поппендиков, во многом основанная на принципах бережливого производства, с Toyota в качестве плаката.У нее много общего с другими методологиями Agile: основное внимание уделяется устранению потерь, использованию теории очередей и мышлению «точно в срок» (например,уточняя историю в последний ответственный момент).

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

Проектирование по контракту с дополнительным модульным тестированием

Там, где я работаю, мы используем водопад, но после некоторого давления с моей стороны мы больше переходим к гибридной модели Agile/TDD/CI для некоторых наших новых проектов.Даст Бог, мы сможем отказаться от метода водопада.Каждый выпуск технического обслуживания, который мы выпускаем, наш основной клиент просто игнорирует сроки выполнения требований и вручает нам изменения в требованиях прямо в последнюю секунду, а затем просто тупо смотрит на нас, пока мы объясняем, почему они не могут продолжать это делать.

Код и исправление !!

Просто шучу, ТДД это действительно замечательный способ.

TDD для проектирования через тестирование

Уверенность, которую вы получаете, зная, что изменение кода не нарушило что-то незаметное, — это здорово.

Я поддерживаю голосование за Agile.В настоящее время я изучаю Lean, но, как и в случае с любым процессом разработки, вы не можете просто так включить его в свою текущую группу.Однако существуют функции Lean и Agile, которые можно внедрить в ваши текущие процессы и получить немедленную выгоду.

В моем предыдущем проекте использовался метод «Водопад», и я гордился этим.С тех пор они отвыкли от Waterfall и перешли на Prototype, что является хорошим шагом.

Я работаю в компании, которая занимается как веб-разработкой, так и системной разработкой.Наша модель развития – быстрое развитие.Мы используем более современное определение, поэтому оно похоже на Agile Development.Без концепций XP.

Мы тоже используем Scrum...Я думаю, что стендапы в каком-то смысле могут быть хороши, но иногда быстрые 15 минут превращаются как минимум в 30.

Лично я последние несколько лет склоняюсь к бережливому развитию, на которое сильно повлияло все, что я узнал из XP.Я думаю, здесь важно отметить, что Scrum недостаточен как процесс разработки, поскольку он не влияет на работу по разработке программного обеспечения, а пытается управлять потоком задач по разработке программного обеспечения.Мои мысли также были подсказаны ICONIX.Я думаю, что это отличный способ подойти к среде, основанной на сценариях использования и диаграммах, не увязая в контрпродуктивной бюрократии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top