Каковы пять приоритетов для разработки программного обеспечения?

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

Я привык к принципу "Хорошо, быстро, дешево: выберите два". Но эта система использовала пять показателей. Те, кого я помню:

  • Ошибка без ошибок
  • Вкл. время
  • Функция завершена
  • В бюджете

Но я не помню пятого. Кто-нибудь?

В этой системе реквестер функций дал каждому из пяти приоритетов значение 1 - 5, где 5 означало "очень важно", а 1 означало "не важно". Нет двух приоритетов. Это работает очень хорошо, потому что, если вы хотите, чтобы Bug Free и Feature Complete, то On Budget не означает для вас столько же - но, возможно, это означает больше для вас, чем On Time.

И снова я теряю пятый приоритет.

Ответ 1

Есть, вероятно, десятки версий такой диаграммы n-ветвей.

Я видел это как:

  • Ошибка без ошибок
  • Вкл. время
  • Функция завершена
  • В бюджете
  • Со счастливой командой

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

Ответ 2

Я надеюсь, что это будет связано с "поддерживаемым". В противном случае у вас есть хороший v1, но нет никаких указаний на то, что вы когда-нибудь сможете добавить одну особенность, не повредив все это.

Кроме того, есть такие вещи, как "performant", которые могут подпадать под "полную функцию" в зависимости от того, считаете ли вы скорость как функцию или нет. (Некоторые люди здесь, в Google, имеют футболки с "быстрым - моя любимая функция" на...)

Также следует рассмотреть следующие вопросы:

  • Хорошо документировано (поставляется под ремонтоприемником? Я думал о документации разработчика, но документация для пользователя также могла появиться здесь)
  • Эффективный (он не только достаточно быстр, но ему нужен только ZX Spectrum для обслуживания всех запросов веб-поиска)
  • Безопасный (не читай номера кредитных карт клиентов)
  • Удобный

Ответ 3

Я собираюсь выдвинуть Extendable. (ака Поддержки, Будущие-Доказательства.)

Причиной сказать Extendable является то, что он лучше передает деловому владельцу то, что они задают. Когда вы говорите "Поддержание работоспособности", это звучит не-разработчиком, как вы просите их расставить приоритеты, как легко долить газ и сменить масло.

Ответ 4

Требуется ли то, что нужно клиенту, а не то, что он считает нужным.

Ответ 5

Не уверен, что может быть пятой, или если это не будет означать что-то, что уже подразумевается одним из "основных" четырех, но есть хорошее объяснение этих четырех в главе 7 "Планирование экстремального программирования", вы можете см. некоторые страницы здесь

Ответ 6

Ahh.. кажется, что то, что я увидел, было основано на Rob Thomsett "Ползунки успеха" . Хотя у него семь слайдеров, то, что я видел, было всего пять (и, похоже, два приоритета могут иметь один и тот же балл):

  • Обеспечение удовлетворенности заинтересованных сторон.
  • Достижение функциональных требований
  • Бюджет собрания
  • Сроки проведения совещаний
  • Добавление значения
  • Обеспечьте хорошее качество
  • Удовлетворение членов группы

Я бы сказал, что 1 достигается успешным завершением 2 - 6. Хорошим качеством будет безошибочный приоритет. Таким образом, мы остаемся с "Добавление ценности" или "Сделать команду удовлетворенной". Ничего не звучит знакомо. Мне нужно будет связаться с компанией и спросить.

Ответ 7

в строках jon: масштабируемый

Ответ 8

Отвечает потребностям пользователя?

Ответ 9

В качестве альтернативы:

Эффективное

  • Ничего хорошего, если у вас есть полное программное обеспечение, если это требуется навсегда, или требуется некоторое глупое оборудование....

Ответ 10

Я добавлю " USABLE". Юзабилити - очень важный фактор, который мы, как программисты, забываем. Программное обеспечение с хорошим юзабилити уменьшает множество проблем в кривой обучения пользователей и "используется" все больше и быстрее, чем другое программное обеспечение с одинаковыми возможностями, но не так хорошо в терминах использования.

Ответ 11

Я думаю, что это может быть "Хорошо документировано"

Ответ 12

Мой собственный список:

  • Обеспечение выполнения бизнес-функций.
  • Стремитесь к модульности и ремонтопригодности.
  • Избегайте ползучести области.
  • Поддерживайте хорошие отношения с бизнес-аналитиками и менеджерами проектов.
  • Не сжигайте мосты.

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

Если вы помните о том, на что хороши ваши люди, частично основанные на их послужном списке, и соответственно назначают задания, они будут делать работу, надеясь на большую эффективность, чем кто-то другой, для кого эта задача либо незнакома, либо неблагоприятна территория.

Ответ 13

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

Широко принятые размеры проекта

Общим соглашением в сообществе менеджмента является то, что проект можно нарезать на 4 измерения:

  • сфера
  • Время
  • стоимость
  • Качество

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

Взаимозависимость

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

Допустим, у бизнеса есть фиксированное окно возможностей для избиения конкурентов или предоставления некоторых услуг и наличных денег. Время явно имеет приоритет над областью; части системы могут выполняться вне программного обеспечения.

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

Бесконечная нарезка

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

Качество, вероятно, нарезано на другие категории, большинство из которых связаны с конфликтующими вариантами:

  • Функциональные:
  • Нефункциональный:
    • Юзабилити
    • Поддержание работоспособности и расширяемость дизайна
    • Производительность
    • Эксплуатационные и экологические
    • Правовые (и другие стандарты)
    • Культура (интернационализация, локализация)
    • Внешний вид
    • Безопасность
    • Политический

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

Упрощение вредно

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

Скорее всего, лучше избегать упрощения, помещая плакат на стену, где стоимость всегда имеет приоритет над Областью, или Поддержание может быть более важным, чем Look and Feel. Работа менеджеров проектов заключается в том, чтобы иметь в виду всю картину и давать рекомендации членам команды о принятии решений о приоритизации ежедневно, исходя из обстоятельств.

ПМ не может быть заменен графиком на стене, а также хороший премьер-министр не пытается передать суть своей работы на лист бумаги.

Ответ 14

Как и было обещано, вот список, который я изначально видел:

  • Функция завершена
  • Вкл. время
  • В бюджете
  • Ошибка без ошибок
  • Пригонка для цели

Таким образом, мне не хватало "Fit for Purpose", которое понятно: разница между этим и "полным набором функций" немного сложна для настройки.

Вот пример, который дал мне друг:

В качестве простого примера, если клиент оценивает полноту как высокий и подходит как низкий, это будет означать, что они хотят как онлайн-каталог товаров, так и средство для покупок, даже если обе функции очень рудиментарны. И наоборот, если полнота низкая, а Fit высока, клиент может принять полностью признанный каталог товаров в первом выпуске и без магазина.