Толпа / Гибкий: Как Вы планируете во внутренних улучшениях? [закрытый]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

14
задан vmg 29 November 2015 в 23:11
поделиться

7 ответов

Большой вопрос. Я думаю, что существует несколько разновидностей "деловых вопросов" от ретроспектив, которые заслуживают разных подходов.

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

2) усовершенствования процесса (например, "люди не приезжают в standups вовремя..., позволяют, запускают 1$ для благотворительного пожертвования каждый раз, когда чье-то последнее".)

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

вторая категория должна обрабатываться/управляться менеджером по повторению, менеджером проектов, менеджером по толпе, и т.д. Я (как Ведущее устройство Толпы или Менеджер проектов) обычно перечисляю их на Wiki проекта и говорю о них в ретроспективах, помечаю их, когда они обращены и сообщают команде на состоянии. Я сохраняю огонь освещенным.

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

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

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

9
ответ дан 1 December 2019 в 13:22
поделиться

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

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

7
ответ дан 1 December 2019 в 13:22
поделиться

Кристаллические Методы имеет понятие Отражательного Семинара как средство настроить Ваш процесс разработки. Команды встречаются периодически (менее часто, чем Ваш цикл разработки, возможно) для обсуждения улучшений и состояния процесса. Придумайте 0-3 вещи, которые мы попробовали на этот раз, который работал, и мы сохраним, 1-3 вещи, которые не работают, и 1-3 вещи попробовать в следующий раз. Идея состоит в том, чтобы иметь возрастающее улучшение процесса, а также продукта.

2
ответ дан 1 December 2019 в 13:22
поделиться

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

0
ответ дан 1 December 2019 в 13:22
поделиться

В прошлом году я работал на одного из очень самых ранних Гибких (xp) приемных родителей/консультантов/тренеров. У него был хороший подход, я думаю.

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

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

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

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

, Хотя мы обсудили бы определенные решения, просто произведя проблемы в открытую, имел тенденцию иметь очень положительное влияние. Если бы они остались на, "Не работал" список в течение 3 или 4 недель, мы обсудили бы различные/лучше решения и предприняли бы больше преднамеренной попытки реализовать их.

После того, как объект проводит неделю или два в столбце "Worked well", мы отбросили бы его, так как это более или менее стало ожидаемым (если он не продолжал улучшаться).

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

2
ответ дан 1 December 2019 в 13:22
поделиться

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

0
ответ дан 1 December 2019 в 13:22
поделиться

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

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

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

Относятся к Tom DeMarco Слабый: Заканчивая Перегорание, Бесполезную работу и Миф Общей эффективности (ссылка Amazon) - ISBN 0767907698.

-1
ответ дан 1 December 2019 в 13:22
поделиться