Диссертация (1145120), страница 3
Текст из файла (страница 3)
Оценить эффективность предложенных решений на широком классепрактических задач.10Благодарности. Я хочу выразить признательность своим коллегам и друзьям — тем, кто сделал появление этой работы возможным. Прежде всего,это А. Н. Терехов, который заинтересовал меня предметно-ориентированныммоделированием и под руководством которого я много лет участвовал в исследовательских проектах в этой области. Хочу сказать спасибо А. Н. Иванову, чей ясный ум, точные суждения и человеческая теплота были для менябесценны.
Я очень благодарен Т. А. Гавриловой за многочисленные беседы омоей диссертации и очень ценные советы, которые помогли мне собрать весьматериал в единую картину. Хочу поблагодарить А. Перегудова, которыйвовлёк меня в исследования в области разработки систем телевещания, демонстрируя неиссякаемый интерес к новым областям итехнологиям. Сбольшой теплотой хочу сказать слова благодарности Л. Григорьеву,Д. Кудрявцеву, М.
Арзуманяну, Р. Гагарскому, Ю. Орлову, М. Деревянко иМ. Алисовой за незабываемую дружескую атмосферу в наших совместныхпроектах по моделированию архитектур предприятий, которая служила источником новых идей и плодотворного обмена. Я благодарен К. Романовскому за многолетнее сотрудничество и стабильность в следовании выбраннымприотиретам. Я признателен Л.
Ольховичу за многогранное участие в совместных исследованиях и умение все доводить до конца. Я благодарюР. Чернятчика и А. Казакову за профессионализм, самостоятельность и самоотдачу. Мне было очень интересно работать с А. Сидориной и Ю. Шевцовой,которые показали, что значит преданность делу. Я искренне признателенА. Самочадину за возможность участвовать в интересном международномисследовательском проекте «Improving social services», а также за оптимизм идемонстрацию того, что творческий поток новых идей в действительности неиссякаем. Я благодарю А. Сорокина за обстоятельность, профессионализм ивысокое качество работы.
Хочу сказать слова благодарности Т. Лебедковой,И. Алексееву и Е. Калугину за энтузиазм, включенность, инициативность и11предприимчивость в работе. Мне приятно воспользоваться случаем и поблагодарить Д. Луцива за разнообразную помощь в работе над диссертацией, атакжезадобротуисердечность. ХочуспециальнопоблагодаритьА. К. Петренко, терпеливо прочитавшего разные версии моего авторефератаи сделавшего очень много ценных замечаний, сопровождавшихся историямииз жизни и наглядными примерами.
Я очень признателен Б. А. Позину,Г. Н. Калянову, В. А. Семенову и В. Кулямину за конструктивную критикуи острые вопросы по поводу моей работы, высказанные на семинарах в ИСПРАН и позволившие мне многое осознать. В работе над диссертацией мнеочень помогли мудрые советы и поддержка А. Р. Лисса, за что я ему оченьпризнателен. Хочу поблагодарить О. Н. Граничина, объяснившего мне многиетонкостипосозданиюсбалансированнойструктурынаучногоста. Выражаю признательность моим коллегам по кафедре Ю.
Литвинову иТ. Брыксину, которые охотно делились со мной информацией в области визуального и предметно-ориентированного моделирования. Я благодарен коллегампоГ. А. Леонову,математико-механическомуС. М. Селеджи,факультетуД. Ю. Булычеву,Н. В. Кузнецову,А. Л. Тулупьеву,Б. К. Мартыненко, Н. К.
Кривулину и многим другим за помощь и поддержку. Я признателен за поддержку компании JetBrains и, в частности, её исполнительному директору А. Иванову. Я благодарен М. Андреевой за неоценимую помощь в работе над текстом. Хочу сказать спасибо своему другуН. Квас за бескорыстную помощь и непрерывную готовность помогать.
Я хотел бы также поблагодарить своих друзей С. Куприкова, Л. Швындину,А. Чупахину, П. Мамкина, Е. Бобрико-ву, А. Поливоду и многих других заискренний интерес к моей деятельности, дружеское участие и поддержку.Наконец, я благодарен своим родителями за многолетнюю поддержку и безусловное одобрение моей научной деятельности, за неиссякаемый и живойинтерес к моим исследованиям и проектам.12Глава 1. Обзор1.1 Визуальное моделирование1.1.1 Основные понятия4Разработка ПО все ещё продолжает оставаться деятельностью, которая сопряжена с рисками.
Так, существуют проблемы с предсказуемостью временных и финансовых затрат программных проектов, также в процессе разработки возникает много коммуникативных проблем, что оказывается причиной трудностей при работе с требованиями — с одной стороны, программисты неправильно, неточно, с неадекватными приоритетами воспринимаютнужды заказчика, с другой стороны, заказчик часто не понимает, что жеименно разрабатывается для него.
Следует также отметить изменчивость инезримость ПО [188], что затрудняет поддержку концептуальной целостности больших проектов. Для преодоления всех этих и подобных им проблем,в поисках надёжных и хорошо зарекомендовавших себя методов, учёные иметодологи обратились к другим, более зрелым инженерным областям. Вчастности, было замечено, что в машиностроении, электротехнике и строительстве успешно используется чертёжный подход, в рамках которого выделяется два следующих этапа разработки системы — проектирование и реализация. Проектирование выполняют конструкторы, инженеры, архитекторы, анепосредственно изготовляют систему строители, рабочие, электромонтёры.Результаты проектирования фиксируются с помощью чертежей, которые являются схематичной, но точной спецификацией системы, игнорируя несущественную информацию о системе и в то же время точно описывая все необходимые детали.Эти чертежи оказываются эффективным интерфейсоммежду обеими группами специалистов, обязывая рабочих, строителей и прочих разработчиков строго следовать принятым решениям.
Таким образом,чертежи сыграли важную роль в становлении современного промышленного4Материал данного раздела излагается по книги автора диссертационной работы [49].13производства, закрепив разделение труда между инженерами-проектировщиками и обычными рабочими [27]. При этом отметим важность коммуникативной роли чертежей. Возникла идея использовать чертежи и в программной инженерии.
Однако здесь выявился ряд особенностей, не позволивших использовать чертёжное проектирование при разработке ПО as is.Одним из основных отличий человека от других живых существ являетсяналичие у него высшей нервной деятельности — мышления, интуиции, эмоций, религиозного чувства и т.д. Однако фундаментальная проблема современной психологии заключается в невозможности объяснить и описать этифеномены в терминах физиологических процессов человека, в то время какпоследние относительно хорошо изучены за последние 150 лет [6]. В частности, до сих пор неясно, как физиологические акты восприятия, осуществляемые органами чувств — зрения, осязания, вкусовых рецепторов, слуха иобоняния — создают доступные нам глубокие и многообразные картины:прекрасные и захватывающие природные виды, гениальные произведенияискусства, глубокое общение с другими людьми, наконец, самовосприятиечеловека. Как раздражение на сетчатке формируют зрительные образы, какзвуки, воспринятые аппаратом слуха, превращаются в мелодии, способныевызвать разнообразные переживания и т.д.
Таким образом, у человека имеется физический мир, где протекающие процессы более менее понятны инаучно обоснованы, и психический мир, где происходит, во многом, загадочная для науки деятельность человеческого сознания и души.При разработке и использовании инженерных объектов задействуются какфизический, так и психический миры человека. Концепции, идеи, требованияи т.д. оказываются явлениями психического мира. Напротив, физическаяформа изделия, геометрические размеры, а также его внутреннее устройство(например, микросхемы, платы, шестерёнки) является частью физическогомира.
Важнейшим отличием программного обеспечения от других инженерных изделий является то, что оно оказывается существенно нефизическим14нематериальным объектом, но в значительной мере является объектом психическим.F. Brooks в своей известной работе «Серебряной пули нет» [188] сформулировал следующие признаки ПО, которые отличают его от других искусственных систем, включая научные теории, здания, механизмы и пр.: сложность, согласуемость, невидимость, изменчивость. Но это, скорее, атрибутное определение — явление уже есть, и перечисляются его основные характеристики.Можно, конечно же, сказать, что программное обеспечение являетсянекоторым текстом (то есть программой на языке программирования), илидистрибутивом системы, то есть диском с файлами инсталляции (но такойдистрибутив, к сожалению, не всегда имеется), илинабором бинарныхфайлов и т.д.
Но все эти артефакты обычно снабжаются большимколичеством дополнительных знаний, не выводимых непосредственно изпрограммного кода: бизнес-требованиями, архитектурными концепциями ит.д. С этим, в частности, связаны проблемы обратной инженерии (reverseengineering) [234], занимающейся автоматизированным восстановлениемразличной информации из программного кода. Более того, даже такаяотносительно простая задача как дизассемблирование (автоматическоевосстановление ассемблерного кода по бинарному) на практике оказываетсятрудно разрешимой [41].H.
Mills определил ПО как набор логических предписаний, с помощьюкоторых коллектив людей управляет распределённой и многопроцессорнойвычислительной системой устройств [349]. В этом определении мы видимфизические объекты — вычислительные устройства, а также психические —логические предписания. И последние занимают в этом определенииведущую роль.Итак, визуализировать логические предписания является непростойзадачей.Напротив, другие инженерные объекты — здания, автомобили,15самолёты — являютсяполноценнымиисамодостаточнымиобъектамифизического мира, их можно увидеть и поэтому начертить или нарисовать.Таким образом, из-за невидимости ПО чертежи не вносят в программныепроекты той ясности, как при разработке других инженерных объектов(видимых, материальных). Не имея согласованных зрительных образов ПО,мы не можем договориться, КАКИМ СПОСОБОМ его изображать.
Каждыйможет и склонен «видеть» и изображать ПО по-своему или вовсе обходитьсябез его изображений (среди программистов есть много скептиков по поводувизуального моделирования в принципе). Не до конца понятно также и то,какую часть ПО необходимо изображать: скорее всего, это его архитектура,но в литературе по программной инженерии на настоящий момент несуществует однозначного определения архитектуры — так, например, статьипод названием «Что такое архитектура ПО» продолжают появляться в печатидо сих пор (см., например, работу [406]).
Наконец, при разработке ПО неудаётся организовать разделение труда так же, как в других промышленныхобластях,выделив,профессиональныхпроектированиесиоднойстороны,опытныхпрограммногонемногочисленных,архитекторов,продукта,свысоко-ответственныхдругойзастороны —многочисленных и исполнительных разработчиков, действующих строго всоответствии с проектной спецификацией. Архитектор программногопродукта, как правило, участвует в его реализации как разработчик, потомучто зачастую только он полностью понимает все детали проекта, а такжеварианты и пути его дальнейшего развития.В свою очередь, другиеразработчики также участвуют в принятии архитектурных решений и сильноотличаются, например, от рабочих-строителей, возводящих дом по готовымчертежам.
Тоесть разница в образовании, менталитете, опыте исоответственно, в зарплате между архитекторами и разработчиками ПО нестоль велика, как, например, в строительстве.Кроме того, разработка ПОявляется, как правило, итеративным процессом, и поэтому проектирование16не может быть полностью завершено перед началом непосредственнойразработки, а его результаты — однозначно зафиксированы в виде чертежей:не все решения очевидны с самого начала, кроме того, требования к ПОизменчивы, и это также влияет на изменения его архитектуры.В силу невидимости ПО при его визуализации центральной задачейявляется поиск подходящих метафор.