Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Размер и частота фиксаций управления исходным кодом.
При использовании Толпы Вы хотите знать, как Толпа каждого дня пошла. Люди сделали, что они сказали, что сделать?
Лично, я плох в нем. Я хронически работаю на своих ежедневных газетах.
улучшите мой team’s процесс разработки программного обеспечения
, важно понять, что метрики не могут сделать ничего для улучшения team’s процесса разработки программного обеспечения. Все, для чего они могут использоваться, имеет размеры, как хорошо Вы совершенствуетесь к улучшению Вашего процесса разработки в отношении конкретной метрики, которую Вы используете. Возможно, я придираюсь по семантике, но способ, которым Вы выражаете ее, состоит в том, почему большинство разработчиков ненавидит ее. Это кажется, что Вы пытаетесь использовать метрики для управления результатом вместо того, чтобы использовать метрики для измерения результата.
Другими словами, был бы Вы скорее иметь 100%-е покрытие кода и паршивые модульные тесты или фантастические модульные тесты и < 80%-е покрытие?
Ваш ответ должен быть последним. Вы могли даже хотеть идеальный мир и иметь обоих, но Вы лучше фокусируетесь на модульных тестах сначала и позволяете покрытию добраться там, когда это делает.
количество подобных строк. (копируйте/вставляйте код)
улучшают временные оценки
, В то время как Планирование Joel Spolsky На основе фактических данных не по сути метрика , это походит точно, что Вы хотите. См. http://www.joelonsoftware.com/items/2007/10/26.html
разветвляется на входе и Разветвляется, мое избранное.
разветвитесь на входе: Сколько другие модули/классы используют/знают этот модуль
, Разветвитесь: Сколько других модулей делает этот модуль, используют/знают
Если Вы используете Толпу, отставание. Насколько большой это после каждого спринта? Это уменьшается на последовательном уровне? Или материал, продвигаемый в отставание из-за (a) материала, который не думался для начала ("Нам нужен другой вариант использования для аудиторского отчета, что никакая мысль, я просто добавлю его к отставанию".) или (b) не получения сделанного материала и продвижение его в отставание встретить дату вместо обещанных функций.
Дорожка, подверглась ли часть источника обзору и, если так, что тип. И позже, отследите количество ошибок, найденных в рассмотренном по сравнению с нерассмотренным кодом.
Это позволит Вам определять, как эффективно Ваш процесс (процессы) рассмотрения кода работает с точки зрения найденных ошибок.
взаимозависимость между классами. как плотно Ваш код связан.
количество проваливания тестов или поврежденных сборок на фиксацию.
Отследите количество клонов (подобные фрагменты кода) в исходном коде.
Избавляются от клонов путем рефакторинга кода, как только Вы определяете клоны.
Средняя функциональная длина, или возможно гистограмма функциональных длин для получения лучшего ощущения.
, Чем дольше функция, тем менее очевидна ее правильность. Если код содержит много долгих функций, это - вероятно, безопасная ставка, что существует несколько ошибок, скрывающихся там.
Скорость: количество функций в данную единицу времени.
До Вас, чтобы определить, как Вы определяете функции, но они должны быть примерно тем же порядком величины иначе, скорость менее полезна. Например, можно классифицировать функции историями или вариантами использования. Они должны быть сломаны так, чтобы они были всеми примерно тот же размер. Каждое повторение, выясните, сколько историй (примеры использования) было реализовано (завершенные). Среднее количество функций/повторения является Вашей скоростью. Как только Вы знаете свою скорость на основе Вашей единицы функции, можно использовать его, чтобы помочь оценить, сколько времени это возьмет для завершения новых проектов на основе их функций.
[РЕДАКТИРОВАНИЕ], С другой стороны, можно присвоить вес как единицы функциональности, или история указывает на каждую историю как мера сложности, затем сложите точки для каждой завершенной функции и вычислите скорость в точках/повторении.
Отследите источник и тип ошибок, которые Вы находите.
источник ошибки представляет фазу разработки, в которой была представлена ошибка. (например, спецификация, дизайн, реализация и т.д.)
тип ошибки является широким стилем ошибки. например, выделение памяти, неправильное условное выражение.
Это должно позволить Вам изменять процедуры, которые Вы выполняете в той фазе разработки и настроить Ваше руководство стиля кодирования, чтобы попытаться устранить по представленным типам ошибки.
"улучшите мой team’s процесс разработки программного обеспечения": Дефектная Находка и Фиксирует Ставки
, Это касается количества дефектов или ошибок, повышенных против количества мер, которые фиксировались или проверялись.
я должен был бы сказать, что это - одна из действительно важных метрик, потому что она дает Вам две вещи:
А низко фиксируют ставку, указывает, что команда занята, работая над другими вещами (функции, возможно). Если количество ошибки высоко, Вы, возможно, должны были бы заставить разработчиков обращаться к некоторым дефектам.
А низко находят, что уровень указывает, что или Ваше решение является блестящим, и почти свободная ошибка, или команда QA была заблокирована или имеет другой фокус.
Дорожка, какой длины взятия, чтобы сделать задачу, которая имеет оценку против нее. Если они были хорошо под, вопрос почему. Если они хорошо закончены, вопрос почему.
не делают его отрицательным моментом, хорошо, если задачи прорываются или были недооцененным путем. Ваша цель состоит в том, чтобы постоянно улучшать Ваш процесс оценки.
Обратное покрытие кода
Получает процент кода, не выполненного во время теста. Это - similiar к тому, что упомянул Shafa, но использование отличается. Если строка кода, работал во время тестирования тогда, мы знаем, что это могло бы быть протестировано. Но если строка кода не была, работал тогда, мы знаем наверняка, что это, не был протестирован. Быть предназначением эти области для поблочного тестирования улучшит качество и занимает меньше времени, чем аудит кода, который был покрыт. Идеально можно сделать обоих, но что никогда швы для случая.
ROI.
общая сумма дохода, введенного программным обеспечением минус общая сумма затрат для создания программного обеспечения. Разбивка затраты процентом общей стоимости и изолированный Ваше самое плохое выполнение и самая дорогая область с точки зрения дохода от инвестиций. Улучшите, автоматизируйте или устраните ту проблемную область, если это возможно. С другой стороны найдите свою самую высокую область дохода от инвестиций и найдите способы усилить ее эффекты еще больше. Если 80% Вашего ROI прибывают из 20% Вашей стоимости или усилия, разверните ту конкретную область и минимизируйте остальных для сравнения.
Затраты будут включать платежную ведомость, лицензии, судебные издержки, аппаратные средства, оргтехнику, маркетинг, производство, распределение и поддержку. Это может быть сделано на макро-уровне для компании как целое или микро уровне для команды или человека. Это может также быть применено ко времени, задачам и методам в дополнение к доходу.
Это не означает, игнорируют все подробности, но находят способ определить количество всего и затем сконцентрироваться на областях, которые приводят к лучшим (объективным) результатам.
Most of the aforementioned metrics are interesting but won't help you improve team performance. Problem is your asking a management question in a development forum.
Here are a few metrics: Estimates/vs/actuals at the project schedule level and personal level (see previous link to Joel's Evidence-based method), % defects removed at release (see my blog: http://redrockresearch.org/?p=58), Scope creep/month, and overall productivity rating (Putnam's productivity index). Also, developers bandwidth is good to measure.
Каждый раз, когда группа контроля качества сообщает об ошибке, анализируйте, почему этот дефект не прошел модульное тестирование разработчиками.
Считайте это постоянным упражнением по самосовершенствованию.
Мне особенно нравится и я использую систему, которую рекомендует Мэри Поппендик . Эта система основана на трех целостных измерениях, которые должны быть приняты как пакет (так что нет, я не буду давать 3 ответа):
Мне не нужно больше знать, находимся ли мы в фазе с конечной целью: обеспечить ценность для пользователей, и быстро.
Возможно, вы сможете протестировать CodeHealer
CodeHealer проводит углубленный анализ исходного кода, ищет проблемы в следующих областях:
Мне нравятся показатели эффективности устранения дефектов. DRE - это соотношение дефектов, устраненных до выпуска программного обеспечения, ко всем обнаруженным дефектам. Я предлагаю отслеживать эти показатели для каждого выпуска вашего программного обеспечения в производство.