1. Введение
1.1. Глоссарий
Исходный текст программы Delphi Object Pascal — набор символов алфавита, соот-ветствующий синтаксису компилятора Delphi.
Форматирование исходного текста программы — преобразование исходного текста программы в соответствии с каким-либо заданным стандартом без потери текстом своей семантической нагрузки.
Open source проект — программный продукт, поставляемый с исходными кодами, свободными для модификации и дальнейшего некоммерческого распространения.
1.2. Описание предметной области
Начало 90-х годов прошлого столетия было ознаменовано бурным всплеском в раз-витии компьютерной технологии. Значительные успехи в области компьютерного маши-ностроения привели к серьезному удешевлению стоимости персональных компьютеров, и, как следствие, к их обширному распространению. Рост вычислительных мощностей пер-сональных компьютеров привел к повышению уровня ожиданий рядового пользователя от программного обеспечения и, как следствие, к усложнению разрабатываемых программ-ных продуктов.
В настоящее время большинство приложений разрабатывается коллективами про-граммистов, зачастую с применением большого числа компонент от сторонних произво-дителей. Все это не могло не привести к выработке единых стандартов форматирования исходных текстов программ внутри отдельных коллективов, а также более крупных групп разработчиков, например, стандарт форматирования исходных текстов программ на Del-phi Object Pascal фирмы Borland ([1]). К сожалению, в настоящее время не существует единого стандарта кодирования, которого бы придерживались все разработчики в рамках хотя бы одного языка программирования.
Таким образом, зачастую при внесении изменений в программный код возникает не-обходимость в его переформатировании, что ведет к излишней трате человеческого ресур-са и, как следствие, снижению эффективности разработки.
Деятельность компании заказчика ООО “Инсайт Экспертс” связана с написанием и продажей программных продуктов. В компании разработан свой собственный стандарт кодирования ([2]), которого придерживаются все разработчики ООО “Инсайт Экспертс”. Зачастую в процессе работы используются программные компоненты сторонних разра-ботчиков. Общий объем этих компонент превышает десятки тысяч строк кода на языке Delphi Object Pascal. В компании были предприняты попытки по приведению данного ко-да в соответствии с принятым стандартом кодирования, в частности, в сети Интернет была найдена открытая библиотека JCF [3], позволяющая преобразовывать исходные тексты программ, написанных на Delphi Object Pascal. К сожалению, данная библиотека не может быть настроена таким образом, чтобы выполнялись хотя бы основные элементы принято-го стандарта кодирования. Попытки отформатировать существующий код вручную не рассматривались ввиду трудоемкости данной задачи.
Еще одним элементом в работе компании является то, что на менеджеров проектов возложена обязанность проверки кода, написанного разработчиками, в том числе и на его соответствие принятому стандарту. Автоматизация данного процесса позволила бы ме-неджерам проектов сэкономить значительную часть рабочего времени, в то же время ко-личество ошибок со стороны разработчиков, связанных с форматирование исходных тек-стов, резко бы сократилось ввиду наличия автоматической системы проверки кода.
Таким образом, возникла необходимость разработки библиотеки, осуществляющей форматирование исходных текстов программ, написанных на Delphi Object Pascal, обла-дающая гибкой настраиваемостью в связи с внесением возможных изменений в сущест-вующий стандарт кодирования ООО “Инсайт Экспертс”.
Помимо компании заказчика данная библиотека также может быть полезна всем, чья деятельность так или иначе связана с написанием программ на Delphi Object Pascal, а так-же чтением исходного кода, написанного другими людьми, в том числе, преподавателям ВУЗов и людям, занимающимся сопровождением программ.
1.3. Неформальная постановка задачи
Целью данной работы является разработка библиотеки классов, которая должна по-зволять выполнять следующие функции:
Форматировать синтаксически корректный исходный код программы в полном или близком к нему соответствии со стандартом кодирования, приня-тым в ООО “Инсайт Экспертс”
Требовать относительно небольших усилий при модернизации или дополне-нии системы
Обеспечивать производительность, достаточную для работы на ЭВМ, уста-новленных в ООО “Инсайт Экспертс”
Предполагается, что библиотека будет свободно распространяться с открытыми ис-ходными текстами в соответствии с лицензией MPL (Mozilla Public License, [4]).
Ниже (рис. 1) приведена диаграмма вариантов использования библиотеки и прило-жений, написанных с ее помощью:
Рис. 1. Диаграмма вариантов использования
1.4. Обзор существующих методов решения
В рамках написания данной работы автором было рассмотрено несколько конкури-рующих решений, найденных в сети Интернет. Основным недостатком всех их является отсутствие возможности сконфигурировать их таким образом, чтобы поддерживался стандарт форматирования исходных текстов, принятый в ООО “Инсайт Экспертс” .
Название Гибкость настроек Скорость работы Стандарт Borland Стандарт ООО “Ин-сайт Экс-пертс” Открытость Бесплатность
Free Pas-cal – + – – + +
DelForEx + + – – – +
SCoder – +/– – – – –
JCF + +/– + – + +
ICF + +/– + +/– + +
Исходя из проведенного анализа, было принято решение взять за основу систему JCF (Jedi Code Formatter) и на ее базе создать систему ICF (Insight Code Formatter), насле-дующую, с одной стороны, все свойства JCF, а с другой стороны позволяющую обеспе-чить потребности закзазчика в лице ООО “Инсайт Экспертс”.
2. Требования к окружению
2.1. Требования к аппаратному обеспечению
Минимальные требования: PII-233 / 128 MB / 5 MB, монитор 256 цветов
Относительно высокие требования к количеству оперативной памяти обусловлены в первую очередь тем, что библиотека во многом дублирует работу компилятора при фор-матировании кода, в том числе, производит анализ внешних подключаемых модулей Дельфи.
2.2. Требования к программному обеспечению
Необходимо:
• Операционная система Windows 95/98/ME/NT 4.0/2000/XP
• Библиотеки JCL, JVCL ([5])
• Borland Delphi 5/6/7
Рекомендуется:
• Система контроля версий исходного кода с подсистемой сравнения версий исход-ного кода
2.3. Требования к пользователям
2.3.1. Разработчик
Разработчик конечного продукта должен владеть основными приемами объектно-ориентированного программирования.
2.3.2. Пользователь
Пользователь системы должен быть знаком с основными элементами управления Widows, также он должен обладать навыком программирования на языке Delphi Object Pascal.
3. Спецификация данных
|