OberonCore https://forum.oberoncore.ru/ |
|
Метрики кода для оценки ПО https://forum.oberoncore.ru/viewtopic.php?f=86&t=3714 |
Страница 1 из 2 |
Автор: | Роман М. [ Суббота, 10 Декабрь, 2011 20:52 ] |
Заголовок сообщения: | Метрики кода для оценки ПО |
Википедия писал(а): Как сказал Том ДеМарко, «вы не можете контролировать то, что не можете измерить». На днях задался целью найти способ определять качество ПО, чтобы попытаться улучшить его и впервые выяснил для себя, что есть такие метрики. Существуют различные метрики для оценки кода ПО. Некоторые их них это:
Насчёт числа строк кода есть некоторые сомнения. Уж слишком неоднозначный результат даёт. Учитываете ли вы эти метрики при разработке ПО? Источники: [1] Метрики кода [2] ссылка в Википедии на статью "Цикломатическая сложность" |
Автор: | Валерий Лаптев [ Суббота, 10 Декабрь, 2011 21:36 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
В книжке "Идеальная разработка ПО" есть глава 8, которая называется так: Кроме количества строк нужны ли дополнительные метрики сложности? Авторы делают вывод, что не очень-то они и нужны, поскольку метрика строк довольно хорошо коррелирует с остальными метриками. |
Автор: | Александр Шостак [ Суббота, 10 Декабрь, 2011 22:14 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Тоже не соглашусь. Очень зависит от стиля. Если ASSERT-ы проверяют каждый параметр - сложность возросла на 25%. С чего бы? Если принудительно зануляются переменные - тоже растёт. И т.д. А иной короткий код вообще не понять, ибо оптимизация в ущерб читаемости и поддержке. Сложное выражение можно разбить на части, а можно в строку записать. Есть в электронном виде в сети "Идеальный код"? |
Автор: | Валерий Лаптев [ Воскресенье, 11 Декабрь, 2011 09:08 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Еще нужно сказать, что метрик разработано - вагон и маленькая тележка. А самое важное - интерпретация полученных значений. И тут, окромя экспертных оценок, реально ничего нет. Мой аспирант занимался этой проблемой, поскольку был одновременно начальником отдела АСУ и перед ним в полный рост стояла задача оценки качества кода и как следствие квалификация работы программиста. Квалификацию можно оценить, если уметь оценивать качество ПО. Тогда оценка качества двух версий покажет характер текущих изменений: в лучшую или в худшую сторону. А качество он придумал оцифровать с помощью нечетких нейронных сетей Ванга-Менделя. Но метод - как результат Хачияна о задаче линейного программирования. Теоретически все зашибись, а практически - фиг знает, как это будет работать. Потому как для обучения нейронной сети тоже требуется оценка эксперта. |
Автор: | Info21 [ Воскресенье, 11 Декабрь, 2011 10:12 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Интересно оценивать evolvability. Тут всё начинается с читабельности/понимабельности. Насколько быстро читатель может понять, что там происходит -- и что-то исправить. Берем десять программеров, и засекаем десять секундомеров. Типа |
Автор: | Валерий Лаптев [ Воскресенье, 11 Декабрь, 2011 13:55 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Info21 писал(а): Интересно оценивать evolvability. Тут всё начинается с читабельности/понимабельности. Насколько быстро читатель может понять, что там происходит -- и что-то исправить. Берем десять программеров, и засекаем десять секундомеров. Типа Ну, о субъективности подобного подхода писал еще Вейнберг. И Шнейдерман - тоже. "rgthbvtyns были примерно такие. Берут несколько примерно равных по квалификации программеров и задают задачу написать программу. Но подцели - разные. Одни должны писать максимально быструю, другие - минимальную по объему. Третьим - максимально читабельную, четвертым - какую-нибудь... Результаты отличались офигительно! |
Автор: | Евгений Темиргалеев [ Воскресенье, 11 Декабрь, 2011 15:42 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Валерий Лаптев писал(а): Info21 писал(а): Интересно оценивать evolvability. Тут всё начинается с читабельности/понимабельности. Насколько быстро читатель может понять, что там происходит -- и что-то исправить. Берем десять программеров, и засекаем десять секундомеров. Типа Ну, о субъективности подобного подхода писал еще Вейнберг. И Шнейдерман - тоже. "rgthbvtyns были примерно такие. Берут несколько примерно равных по квалификации программеров и задают задачу написать программу. |
Автор: | Евгений Темиргалеев [ Воскресенье, 11 Декабрь, 2011 15:47 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Валерий Лаптев писал(а): Мой аспирант занимался этой проблемой, поскольку был одновременно начальником отдела АСУ и перед ним в полный рост стояла задача оценки качества кода и как следствие квалификация работы программиста. Метрика менделя-шменделя для оценки качества... Хренота эта всё....А качество он придумал оцифровать с помощью нечетких нейронных сетей Ванга-Менделя. Программист должен помимо кода выдавать его "чертёж" --- собственноручно написанную документацию с предусловиями/постусловиями и набор отработанных им тестов на каждую процедуру. Вот тогда и будет качество. |
Автор: | Иван Кузьмицкий [ Воскресенье, 11 Декабрь, 2011 15:50 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Евгений Темиргалеев писал(а): Программист должен помимо кода выдавать его "чертёж" --- собственноручно написанную документацию с предусловиями/постусловиями и набор отработанных им тестов на каждую процедуру. Вот тогда и будет качество. Разрешите подписаться. Только когда "чертёж" есть, можно начинать о чём-то говорить.
|
Автор: | Валерий Лаптев [ Воскресенье, 11 Декабрь, 2011 16:42 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Иван Кузьмицкий писал(а): Евгений Темиргалеев писал(а): Программист должен помимо кода выдавать его "чертёж" --- собственноручно написанную документацию с предусловиями/постусловиями и набор отработанных им тестов на каждую процедуру. Вот тогда и будет качество. Разрешите подписаться. Только когда "чертёж" есть, можно начинать о чём-то говорить.Фокус заключается в том, что наша работа позволяет оценивать уже проект, на стадии проектирования. А потом при кодировании - уточнять. Естественно, подход не является "серебряной пулей", а нацелен был исключительно на работу нашего отдела АСУ. То есть разработка ОО-систем в Студии на шарпе. И метриками обкладывали уже с начала проектирования. Естественно, сначала строилась модель, на которой считались метрики. Эта модель проходит "красной нитью" через всю методу. Так что не все так однозначно неприемлемо. |
Автор: | Евгений Темиргалеев [ Воскресенье, 11 Декабрь, 2011 19:24 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Валерий Лаптев писал(а): И метриками обкладывали уже с начала проектирования. Естественно, сначала строилась модель, на которой считались метрики. Эта модель проходит "красной нитью" через всю методу. Не спорю, что это дело может быть работоспособно и приемлемо. Мне не нравится сама постановка задачи.Так что не все так однозначно неприемлемо. Если я Вас правильно понял, у вас разработан "шаманский" метод (позволю это слово, т.к. речь шла об экспертных оценках данных), обслуживающий результаты обычного процесса производства кода программистом. По-моему, нужно разрабатывать методы и требования, нацеленные на сам процесс производства и выдаваемые результаты. Чтобы процесс стал систематическим, а результаты формально контролируемыми по нормативам. Без необходимости привлекать особо тренированных экспертов. |
Автор: | igor [ Воскресенье, 11 Декабрь, 2011 19:32 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Роман М. писал(а): Существуют различные метрики для оценки кода ПО. Некоторые их них это: Нет. И не планирую.
Учитываете ли вы эти метрики при разработке ПО? Чем-то мне это напоминает внедрение СМК на предприятии. (СМК - система менеджмента качества) |
Автор: | Евгений Темиргалеев [ Воскресенье, 11 Декабрь, 2011 19:36 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
igor писал(а): Чем-то мне это напоминает внедрение СМК на предприятии. Метрики кода <-> система менеджмента качества... Интересная аналогия: оценка качества производства в отрыве (не зависимо) от самого процесса производства?
|
Автор: | igor [ Воскресенье, 11 Декабрь, 2011 19:47 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Евгений Темиргалеев писал(а): Метрики кода <-> система менеджмента качества... Интересная аналогия: оценка качества производства в отрыве (не зависимо) от самого процесса производства? Типа того. И в том, и в другом случае полезность под большим вопросом (по крайней мере, для меня).
|
Автор: | Info21 [ Воскресенье, 11 Декабрь, 2011 21:27 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
igor писал(а): Евгений Темиргалеев писал(а): Метрики кода <-> система менеджмента качества... Интересная аналогия: оценка качества производства в отрыве (не зависимо) от самого процесса производства? Типа того. И в том, и в другом случае полезность под большим вопросом (по крайней мере, для меня).вот поэтому и вожусь с Информатикой-21 |
Автор: | Валерий Лаптев [ Воскресенье, 11 Декабрь, 2011 23:09 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Евгений Темиргалеев писал(а): Валерий Лаптев писал(а): И метриками обкладывали уже с начала проектирования. Естественно, сначала строилась модель, на которой считались метрики. Эта модель проходит "красной нитью" через всю методу. Не спорю, что это дело может быть работоспособно и приемлемо. Мне не нравится сама постановка задачи.Так что не все так однозначно неприемлемо. Если я Вас правильно понял, у вас разработан "шаманский" метод (позволю это слово, т.к. речь шла об экспертных оценках данных), обслуживающий результаты обычного процесса производства кода программистом. По-моему, нужно разрабатывать методы и требования, нацеленные на сам процесс производства и выдаваемые результаты. Чтобы процесс стал систематическим, а результаты формально контролируемыми по нормативам. Без необходимости привлекать особо тренированных экспертов. Я согласен с вашей точкой зрения. Но здесь есть предмет для научной работы: почему один текст (проект) СЧИТАЕТСЯ (кем?) более качественным (с самых разннообразных точек зрения), чем другой? Как это можно оцифровать? |
Автор: | alexus [ Понедельник, 12 Декабрь, 2011 05:55 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Возможно проблемы с формулировкой качества программного обеспечения (ПО) связаны с тем, что не определён предмет. Что понимается под качеством ПО?.. Что такое ПО?.. Казалось бы всё просто - вот программа, и надо сделать заключение о её качестве... Но программа - это результат труда многих и многих людей (включая тех, кто об этой программе даже не слышал!). Можно попробовать выстроить аналогии с промышленным производством. Например, есть двигатель... что можно сказать о его качестве?.. Первое. Двигатель считается качественным, если его реальные характеристики соответствуют тем, что заявлены (ТТХ - тактико-технические характеристики). Если говорить о ПО, то ПО считается качественным, если функционально соответствует ТЗ (техническому заданию). Однако, ТТХ и ТЗ не "берутся с потолка" - это результат анализа и моделирования определённой предметной области. Второе. Двигатель считается качественным, если соблюдена технология его изготовления. В общем случае, отмечают четыре категории: 1. качественное сырьё и комплектующие; 2. качественная (квалифицированная) рабочая сила; 3. качественное (настроенное) оборудование и инструмент; 4. формальные технологические регламенты (указания/предписания) на каждую операцию и процесс в целом. Во всех четырёх случаях речь идёт об определении качества, как соответствие некоторым формальным входным параметрам/показателям. Помимо этого должен быть/возможен контроль качества в процессе выполнения каждой операции и/или выходной контроль качества продукции/полуфабриката. Как это коррелирует с разработкой ПО?.. Какие комплектующие используются при создании программ/систем?.. Какими показателями определяется качество элементов ПО?.. Очевидно, что при построении ПО используются сторонние или собственные компоненты, модули, библиотеки, классы и т.п. Требования к ним, как правило, формулируются на основе заявленных интерфейсов, а также общих требований к любому ПО - производительность, размер памяти, требуемой для работы, сторонние ОС и библиотеки, отсутствие ошибок и пр. В качестве инструментов при разработке используются языковые среды, СУБД, средства проектирования... на компьютере, который, наряду с ОС и сторонним ПО, образует инструментальную среду. Наконец, требования к рабочей (интеллектуальной) силе, мало чем отличается (по сути) от требований к рабочей (физической) силе... всё те же умения и навыки, знания и опыт. Третье. Качество (промышленной) продукции должно включать (и часто уже включает!) и "послепродажное" обслуживание, под которым понимается организация необходимого сервиса, включая отзыв и замену неисправной продукции. Здесь аналогии с ПО прозрачны и не требуют комментариев. Почему же качество ПО вызывает столько дискуссий?.. Ответ, по моему мнению, состоит в том, что при разработке ПО нет устойчивого представления ни о продукте/результате, ни (тем более!) о стадиях и процессах его получения. Всё основано на каких-то общих идеях, соображениях... которые дорабатываются/формализуются в процессе... Но как не бывает качества "вообще чего-то там", так не бывает и качественного "вообще что-то такое". И если пройти по этапам создания ПО (как и того же двигателя), то вполне просто можно сформулировать понятие качества для каждого этапа и... следовательно, продукта (ПО) в целом. Но... нудно это... не творческое это дело... создавать стандарты и следовать им... Не в этом ли проблема?.. И как следствие при разработке ПО, все процессы перемешаны, свалены в кучу... Разработчик, создавая простую форму визуализации информации... размышляет над алгоритмами... мучается вопросами совершенствования языка... или написанием супер-библиотеки/компонентов... или вопросами оценки качества своей работы... |
Автор: | Валерий Лаптев [ Понедельник, 12 Декабрь, 2011 08:28 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
1. Надо различать внешнее и внутренне качество. Внешнее качество - это как раз те свойства, которые легко наблюдаются и в некоторых случаях легко измеряются. А вот внутреннее качество - именно качество самой проги, тут много вопросов. Вот абзац из одного моего текста: Цитата: Показатели качества программного продукта можно разделить на две категории: внутренние и внешние . Внешние факторы качества (корректность, надежность, эффективность, удобство использования) могут быть определены, исходя из поведения программного продукта, и являются видимыми пользователю. В отличие от них внутренние показатели качества (переносимость, понятность, модифицируемость, сопровождаемость) для пользователя не видны и не важны. Однако эти показатели чрезвычайно важны для разработчиков, поскольку в конечном итоге именно они определяют экономические затраты на разработку требуемого программного продукта. Внутренние показатели более важны для проекта, чем внешние, поскольку внешние характеристики практически всегда от них зависят. 2. А вот о показателях качества - из того же текста: Цитата: Среди специалистов отсутствует единое мнение о номенклатуре показателей качества (несмотря на то, что существуют и международные, и российские стандарты ). Роберт Гласс рассматривает качество ПО как совокупность семи свойств: надежности, переносимости, эффективности, удобства эксплуатации, понятности, тестируемости и модифицируемости. Карло Гецци с соавторами различают качество продукта и процесса. К качествам продукта они относят следующие: корректность, надежность и устойчивость, производительность, удобство, повторная применимость, верифицируемость, сопровождаемость, понятность, переносимость. Иан Грэхем , основываясь на исследованиях других авторов, приводит более обширный список критериев качества: корректность, устойчивость и надежность, возможность сопровождения и расширения, способность к взаимодействию, эффективность, возможность повторного использования и универсальность, переносимость, ясность, возможность верификации, безопасность, целостность, дружественность, возможности описания. Кроме того, он тоже разделяет качество продукта и качество процесса. В стандартах устанавливается более короткий перечень показателей. ГОСТ 28195-89 содержит следующий список комплексных показателей качества программного продукта: надежность, корректность, удобство применения, сопровождаемость, эффективность и универсальность. В международном стандарте ISO 9126 прописаны следующие показатели: эффективность, надежность, сопровождаемость, функциональность, практичность и мобильность. Комплексные показатели называют также факторами качества или характеристиками качества. Каждому из комплексных показателей соответствует определенный набор критериев качества. В свою очередь, каждый из критериев определяется своими метриками, которые составляются из оценочных элементов, определяющих заданное в метрике свойство. На разных этапах ЖЦ для разных классов программных продуктов применяются разные критерии качества. Ссылки на литературу в данном кусочке: Крылов Е.В. Техника разработки программ: в 2 кн. Кн. 2. Технология, надежность и качество программного обеспечения: Учебник / Е.В. Крылов, В.А. Острейковский, Н.Г. Типикин. – М.: Высшая школа, 2008. – 469 c. Гецци К., Джазайери М., Мандриоли Д. Основы инженерии программного обеспечения. 2-е изд.: Пер. с англ. — СПб.: БХВ-Петербург, 2005. – 832 с. Грэхем И. Объектно-ориентированные методы. Принципы и практика. 3-е издание.: Пер.с англ. — М.: Издательский дом «Вильямс», 2004. – 880 с. ГОСТ 28195-89. Оценка качества программных средств. Общие положения. — М.: Издательство стандартов, 1989. Мейер Б. Объектно-ориентированное конструирование программных систем / Пер. с англ. – М.: Издательско-торговый дом «Русская редакция», 2005. – 1232 с. |
Автор: | Владислав Жаринов [ Понедельник, 12 Декабрь, 2011 09:00 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
В опчем, alexus где-то о том же, что и здесь - есть "железячное" качество ("какой значительный шаг в освоении производства продуктов мы сделали своим новым продуктом!" )... и есть "человеческое" ("какой значительный шаг в достижении моих целей позволяет сделать этот новый продукт"). См. на этой странице. |
Автор: | alexus [ Понедельник, 12 Декабрь, 2011 09:06 ] |
Заголовок сообщения: | Re: Метрики кода для оценки ПО |
Валерий Лаптев писал(а): 1. Надо различать внешнее и внутренне качество. Внешнее качество - это как раз те свойства, которые легко наблюдаются и в некоторых случаях легко измеряются. А вот внутреннее качество - именно качество самой проги, тут много вопросов. Хорошо, давайте пройдём по шагам...Есть пять стадий жизненного "цикла" (независимо от того, о чём идёт речь... ПО или двигатель... или табуретка). 1. Анализ и моделирование; 2. Проектирование; 3. Планирование; 4. Реализация; 5. Эксплуатация. Каждая стадия и жизненный цикл, в целом, характеризуются: I. Входами; II. Выходами; III. Процессами; То, что Вы называете "внешним качеством" - это вход стадии анализа и моделирования, то, что можно оценить, сравнив с эталоном или другим аналогичным изделием/ПО, на стадии (опытной) эксплуатации (выход). То, что Вы называете "внутренним качеством" - это соотнесение выходов ко входам на остальных стадиях. Принципиальная разница в наших подходах состоит в том, что я не сваливаю все "качества" в одну кучу, а распределяю их по стадиям, что позволяет формализовать показатели и методику их измерения/оценки, за счёт выполнения проекции показателей на процессы данной стадии ("не с потолка" же берутся эти показатели...). |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |