zinet home
home home
home ИНТЕЛЛЕКТ-ПОРТАЛ
home Стартовал прием материалов в сборник XХХIX-й научной конференции. Требования к публикациям - в разделе "Объявления".

На главную | Объявления | Отчеты предыдущих конференций | История Украины | Контакты

РЕСУРСЫ ПОРТАЛА:

Тридцать восьмая научно-практическая конференция
(23 - 28 мая 2016 г.)


Тридцать седьмая научно-практическая конференция
(19 - 22 апреля 2016 г.)


Тридцать шестая научно-практическая конференция
(29 декабря 2015 - 5 января 2016 г.)


Тридцать пятая научно-практическая конференция
(24-27 ноября 2015 г.)


Тридцать четвертая научно-практическая конференция
(13-17 октября 2015 г.)


Тридцать третья научно-практическая конференция
(20-27 мая 2015 г.)


Тридцать вторая научно-практическая конференция
(2-7 апреля 2015 г.)


Тридцать первая научно-практическая конференция
(25 февраля - 1 марта 2015 г.)


Тридцатая научно-практическая конференция
(19-25 января 2015 г.)


Двадцать девятая международная научно-практическая конференция
(19-25 ноября 2014 г.)


Двадцать восьмая международная научно-практическая конференция
(08-13 октября 2014 г.)


Двадцать седьмая научно-практическая конференция
(20-25 мая 2014 г.)


Двадцать шестая научно-практическая конференция
(7-11 апреля 2014 г.)


Двадцать пятая юбилейная научно-практическая конференция
(3-7 марта 2014 г.)


Двадцать четвертая научно-практическая конференция
(20-25 января 2014 г.)


Двадцать третья научно-практическая конференция
(10-15 декабя 2013 г.)


Двадцать вторая научно-практическая конференция
(4-9 ноябя 2013 г.)


Первая международная научно-практическая конференция
(14-18 мая 2013 г.)


Двадцать первая научно-практическая конференция
(14-18 мая 2013 г.)


Двадцатая научно-практическая конференция
(20-28 апреля 2013 г.)


Девятнадцатая научно-практическая конференция
(26 февряля - 3 марта 2013 г.)


Восемнадцатая научно-практическая конференция
(22-26 декабря 2012 г.)


Семнадцатая научно-практическая конференция
(22-26 октября 2012 г.)


Шестнадцатая научно-практическая конференция
(09-14 апреля 2012 г.)


Пятнадцатая научно-практическая конференция
(01 - 07 марта 2012 г.)


Четырнадцатая научно-практическая конференция
(12-20 декабря 2011 г.)


Тринадцатая научно-практическая конференция
(28 октября - 09 ноября 2011 г.)


Двенадцатая научно-практическая конференция
(28 мая - 06 июня 2011 г.)


Одинадцатая научно-практическая конференция
(26 апреля - 04 мая 2011 г.)


Десятая научно-практическая конференция
(15-23 марта 2011 г.)


Девятая научно-практическая конференция
(27-31 декабря 2010 г.)


Восьмая научно-практическая конференция
(05-12 декабря 2010 г.)


Седьмая научно-практическая конференция
(28 мая - 7 июня 2010 г.)


Шестая научно-практическая конференция
(1-15 апреля 2010 г.)


Пятая научно-практическая конференция
(20-27 мая 2009 г.)


Четвертая научно-практическая конференция
(10-17 апреля 2009 г.)


Третья научно-практическая конференция
(20-27 декабря 2008 г.)


Вторая научно-практическая конференция
(1-7 ноября 2008 г.)


Первая научно-практическая конференция
(10-15 мая 2008 г.)



НАШИ ПАРТНЕРЫ:

Студия веб-дизайна www.zinet.info



Студия ландшафтного дизайна Флора-МК


Уникальное предложение!



Сайт-визитка - теперь
всего за 200 грн!

подробнее>>>



МЕТОДИ ІНТЕЛЕКТУАЛЬНОГО АНАЛІЗУ ДАНИХ В ЗАДАЧАХ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

 

Єсаулов Д.Ю.

Україна, м. Київ ,

Інститут прикладного системного аналізу, НТУУ «КПІ»

 

In this article was highlighted the problem of assessing the quality and complexity of the software. Also highlighted the main principles and approaches to the computation complexity of software architecture. Main tasks set for a decision support system for refactoring.

 

Задача створення якісного коду, який легко читається та підтримується розробниками є надзвичайно актуальною на сьогодні. Проте поняття складності коду є досі погано формалізованим і суб’єктивним.

Метою даної роботи є розробка системи підтримки прийняття рішень на основі метрик, яка б дозволяли виявляти складні місця в коді та надавала б практичні рекомендації щодо рефакторингу.

Застосування метрик програмного коду дозволяє розробникам і керівникам проектів оцінювати властивості створюваного або вже існуючого програмного забезпечення, прогнозувати обсяг робіт, давати кількісну характеристику тих чи інших проектних рішень, якість розроблених систем та їх частин, характеризувати складність або надійність програмного забезпечення.

Для визначення переліку необхідних для аналізу коду метрик та їх модифікацій необхідно сформулювати завдання, які з допомогою даних метрик планується вирішувати. В роботі пропонується виділити 3 групи завдань, які планується вирішувати за допомогою метрик:

·       Класифікація програмного коду за його складністю

·       Оцінка трудомісткості розробки програмного коду

·       Профілювання програмного коду з метою автоматичного виявлення потенційно цікавих для аналізу фрагментів коду.

Можна виділити наступні підходи до обчислення складності та якості вихідного коду:

• Кількісні метрики. Цей клас метрик зазвичай розглядається в першу чергу, зважаючи на простоту. Традиційно кількісні метрики обчислюються на основі початкового коду програм

• Функціонально-орієнтовані метрики. Ці метрики побічно вимірюють програмний продукт і процес його розробки, при цьому розглядається не розмір , а функціональність або корисність продукту

• Об’єктно-орієнтовані метрики. Даний клас використовується при оцінці програм, написаних на об'єктно-орієнтованих мовах програмування.

В роботі запропоновано використовувати наступні метрики : WMC(Weighted Methods Per Class), DIT(Depth of Inheritance Tree), NOC(Number of Children), CBO(Coupling between object classes), RFC(Response For a Class), LCOM(Lack of Cohesion in Methods). На основі їх обрахунку СППР робить перші висновки та класифікує програмний код за складністю та якістю. Наступним кроком йде виділення найбільш проблемних місць та надання практичних порад щодо зменшення складності та поліпшення якості коду.

Одна з задач, яка ставиться перед системою підтримки прийняття рішень в даній роботі, полягає в аналізі вихідного коду програмного продукту, виявленні найбільш слабких місць та формуванні практичних рекомендацій щодо рефакторингу.

Рефакторинг коду це процес зміни початкового коду програми, що не змінює її поведінки і ставить метою полегшити розуміння її роботи та/або спростити її подальшу підтримку. Зазвичай рефакторінг будь-якої програми це внесення невеликих змін в її код, кожне з яких не змінює саму поведінку програми, але якось спрощує і/або поліпшує код.

Дуже важливо, щоб рефакторінг виконувався саме невеликими частинами, тому що коли змінюється невелика частину коду - значно простіше простежити за правильністю змін і не наробити помилок. Якщо ж змінюються відразу великі ділянки коду, то є дуже велика ймовірність наробити помилок, в результаті яких програма може взагалі перестати працювати.

Основна мета рефакторинга це зробити код простіше і зрозуміліше. Якщо після переробки код не став краще і зрозуміліше - значить рефакторінг не робився, або він не вдався. При цьому не можна плутати поняття рефакторинга з оптимізацією. У результаті оптимізації код стає швидше, але зовсім не обов'язково простіше і зрозуміліше, рефакторінг ж служить саме для спрощення і поліпшення зрозумілості коду.

Нижче сформульовані основні правила, грунтуючись на яких, можна зрозуміти, що код вимагає переробки:

• Якщо у програмі є дублювання коду, то майже напевно потрібно проводити рефакторінг. Повторюваний код у програмі - основне джерело помилок. Якщо у програмі якась дія виконується в декількох різних місцях, але одним і тим же кодом - просто необхідно винести цей код в окрему функцію і викликати її. Інакше висока ймовірність того, що одного разу буде змінений код в одному місці, але буде не виправлений аналогічний код в іншому місці і виникнуть помилки.

• У вашій програмі є дуже довгі методи/функції. Як правило, людина не може повністю сприймати і оцінювати правильність коду, якщо цей код займає більше 2-3 десятків рядків. Такі методи і функції слід розділяти на декілька більш дрібних і робити одну спільну функцію, яка буде послідовно викликати ці методи.

• Довгий список параметрів функції/методу/конструктора. Велика кількість параметрів зазвичай не тільки ускладнює розуміння того, що робить цей метод або функція, але і ускладнює розуміння коду, що використовує ці функції. Якщо необхідно, щоб функція приймала дуже багато параметрів - просто винесіть ці параметри в окрему структуру (або клас), давши цій структурі розумне і зрозуміле ім'я, і передавайте функції посилання (або покажчик) на об'єкт цієї структури або класу.

• Великі класи так само вимагають рефакторинга. Якщо в програмі є один або кілька великих (більше пари-трійки сотень рядків коду) класів, слід негайно розділити їх на більш дрібні і включити об'єкти цих класів в один загальний клас. Причина цього та ж сама, що і в попередньому пункті.

• Занадто багато тимчасових змінних так само є ознакою поганого коду, який вимагає рефакторинга. Як правило, багато тимчасових змінних зустрічаються в надмірно "роздутих" функціях - коли робиться рефакторінг таких функції, швидше за все і кількість тимчасових змінних в кожній з них стане менше і код стане значно зрозуміліше і зручніше.

• Багато "безладно" збережених даних, які пов'язаний логічно і їх можна було б об'єднати в структуру, або клас. Логічно пов'язані дані завжди варто зберігати в структурах/класах, навіть якщо це всього 2-3 змінних.

Результатом проведеної роботи є СППР, яка синтаксично аналізує код, надає розрахунки метрик вихідного коду та видає список порад щодо рефакторингу.

 

Література:

1.     Фаулер М. Рефакторинг. Улучшение существующего кода. / М. Фаулер, К. Бек, Д. Брант, У. Апдайк, Д. Робертс, Е. Гамма // Видавництво «Символ-Плюс», 2008. – 432с.

2.     Фаулер М. Чистый код. / М. Фаулер // Видавництво «Пітер», 2010. – 464с.

3.     Гамма Е. Приемы объектно-ориентированного проектирования. Паттерны проектирования. / Е. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес // Видавництво «Пітер», 2007. – 366с.

4.     Lorenz M. Object-Oriented Software Metrics // M. Lorenz, J. Kidd // «Prentice Hall», 1994. - 146pp.



Первая научно-практическая конференция
"Инновационный потенциал украинской науки - ХХI век"
(10-15 мая 2008 г.)


(отчет)
Вторая научно-практическая конференция
"Инновационный потенциал украинской науки - ХХI век"
(1-7 ноября 2008 г.)
(отчет)
Третья научно-практическая конференция
"Инновационный потенциал украинской науки - ХХI век"
(20-27 декабря 2008 г.)
(отчет)
Четвертая научно-практическая конференция
(10-17 апреля 2009 г.)
(отчет)
Пятая научно-практическая конференция
(20-27 мая 2009 г.)
(отчет)
Шестая научно-практическая конференция
(1-15 апреля 2010 г.)
(отчет)
Седьмая научно-практическая конференция
(28 мая - 7 июня 2010 г.)
(отчет)
Восьмая научно-практическая конференция
(05-12 декабря 2010 г.)
(отчет)
Девятая научно-практическая конференция
(27-31 декабря 2010 г.)
(отчет)
Десятая научно-практическая конференция
(15-23 марта 2011 г.)
(отчет)
Одинадцатая научно-практическая конференция
(26 апреля 04 мая 2011 г.)
(отчет)
Двенадцатая научно-практическая конференция
(28 мая - 06 июня 2011 г.)
(отчет)
Тринадцатая научно-практическая конференция
(28 октября - 09 ноября 2011 г.)
(отчет)
Четырнадцатая научно-практическая конференция
(12-20 декабря 2011 г.)
(отчет)
Пятнадцатая научно-практическая конференция
(01-07 марта 2012 г.)
(отчет)
Шестнадцатая научно-практическая конференция
(09-14 апреля 2012 г.)
(отчет)
Семнадцатая научно-практическая конференция
(22-26 октября 2012 г.)
(отчет)
Восемнадцатая научно-практическая конференция
(22-26 декабря 2012 г.)
(отчет)
Девятнадцатая научно-практическая конференция
(26 февраля - 3 марта 2013 г.)
(отчет)
Двадцатая научно-практическая конференция
(20-28 апреля 2013 г.)
(отчет)
Двадцать первая научно-практическая конференция
(13-18 мая 2013 г.)
(отчет)
Первая международная научно-практическая конференция
"Перспективные направления отечественной науки - ХХI век"
(13-18 мая 2013 г.)
(отчет)
Двадцать вторая научно-практическая конференция
(4-9 ноября 2013 г.)
(отчет)
Двадцать третья научно-практическая конференция
(10-15 декабря 2013 г.)
(отчет)
Двадцать четвертая научно-практическая конференция
(20-25 января 2014 г.)
(отчет)
Двадцать пятая юбилейная научно-практическая конференция
(3-7 марта 2014 г.)
(отчет)
Двадцать шестая научно-практическая конференция
(7-11 апреля 2014 г.)
(отчет)
Двадцать седьмая научно-практическая конференция
(20-25 мая 2014 г.)
(отчет)
Двадцать восьмая научно-практическая конференция
(08-13 октября 2014 г.)
(отчет)
Двадцать девятая научно-практическая конференция"
(19-25 ноября 2014 г.)
(отчет)
Тридцатая научно-практическая конференция
(19-25 января 2015 г.)
(отчет)
Тридцать первая научно-практическая конференция
(25 февраля - 1 марта 2015 г.)
(отчет)
Тридцать вторая научно-практическая конференция
(2 - 7 апреля 2015 г.)
(отчет)
Тридцать третья научно-практическая конференция
(20 - 27 мая 2015 г.)
(отчет)
Тридцать четвертая научно-практическая конференция
(13 - 17 октября 2015 г.)
(отчет)
Тридцать пятая научно-практическая конференция
(24 - 27 ноября 2015 г.)
(отчет)
Тридцать шестая научно-практическая конференция
(29 декабря 2015 - 5 января 2016 г.)
(отчет)
Тридцать седьмая научно-практическая конференция
(19 - 22 апреля 2016 г.)
(отчет)
Тридцать восьмая научно-практическая конференция
(23 - 25 мая 2016 г.)
(отчет)

На главную | Объявления | Отчеты предыдущих конференций | История Украины | Контакты

Copyright © Zinet.info. Разработка и поддержка сайта - Студия веб-дизайна Zinet.info