Новизна любой технологии определяется одним из факторов: либо это новый способ решения старой проблемы, либо это иная постановка старого вопроса с разработкой способа его решения.
Сегодня существует целая армия пользователей персональных компьютеров. Если раньше человека, сидящего за компьютером, можно было смело отнести к классу особо посвященных людей - компьютерщиков, то теперь большинство пользователей - это люди, знающие о компьютере не больше, чем о кухонном комбайне. Многие из них не имеют времени или возможности научиться общению с компьютером на уровне понимания его внутреннего устройства и команд. Но соблазнительная стоимость и широкие возможности компьютера привлекают их. Круг задач, решаемых с применением ПК, расширяется и как следствие этого увеличивается потребность в новом прикладном ПО.
Однако средства разработки ПО, хотя и развивались все это время, но гораздо медленнее, чем происходило проникновение компьютеров в нашу повседневную жизнь. Для работы с этими средствами до сих пор требуются высококвалифицированные программисты. Несмотря на современные мощные средства разработки, программисты до сих пор вынуждены тратить не менее нескольких недель на проекты, уровень сложности которых хоть сколько-нибудь отличается от нуля.
Многие приложения не могут появиться на свет не только потому, что нет средств на их разработку, но и из-за того, что требуется слишком много времени для их проектирования и реализации. К моменту предполагаемого ввода в зксплуатацию набор свойств, которыми приложение должно обладать для адекватного выполнения своих задач может измениться настолько, что все придется переделывать заново, так и не приступив к эксплуатации. Внедрение информационных технологий в некоторых областях возможно только при наличии штата программистов, которые систематически вносят изменения в программы и следят за целостностью системы.
Технология создания приложений, используемая в инструментальной среде Miracle, решает данную проблему в двух направлениях. Во-первых, снижение требований к квалификации разработчика, а во-вторых, повышение скорости разработки вместе с одновременным снижением затрат на сопровождение и последующие изменения полученных систем.
Исторически развитие средств разработки было направлено на то, чтобы в процессе реализации крупных и сложных проектов программист мог наиболее оптимально использовать рабочее время. Достигалось это автоматизацией определенных участков цикла проектирования и кодирования прикладных программ, встраиванием в языки программирования новых, более эффективных средств структуризации и абстрагирования. Однако отсутствие комплексного подхода к автоматизации проектирования и программирования обусловили в качестве основы, “связующего вещества”, использование языков программирования, недалеко ушедших от Фортрана или даже макроассемблера. Другими словами, код представлен в виде последовательного текста, где описывается вызов различных функций с передачей им множества необходимых параметров.
Появление мощных средств структуризации (таких, как объектно-ориентированное программирование, ООП) и средств генерации кода (различные инструменты проектирования пользовательского интерфейса) не привело к изменению технологии создания прикладного ПО, а только упростило некоторые процессы. Основная же проблема программирования так и осталась нерешенной, а может быть, и неосознанной.
Возникает простой вопрос - почему так сложно программировать и почему этот процесс требует высокой квалификации и значительных затрат? Основная причина сложности в том, что средства разработки программ во многих случаях предполагают знание программистом внутренних механизмов операционной системы, используемых инструментов и библиотек.
Практически все существующие сегодня инструментальные средства и методы проектирования навязывают ряд принципов и правил. Они, с одной стороны, должны облегчить процесс получения конечного результата, но, с другой стороны, требуют постоянного внимания. Для того чтобы хорошо написать сложную программу, программист должен думать о ней постоянно, даже во время еды и сна. В противном случае он, не осознав поставленной задачи и не учтя всех важных факторов, допустит слишком много ошибок.
Однако возможности человеческого мозга не безграничны. Человек в каждый момент времени может оперировать лишь ограниченным числом правил. Конечно, количество сущностей, хранящихся у нас в сознании, огромно. Мы можем поднимать из его глубин и применять в рассуждениях их все сразу, но делать выводы, учитывая одновременно множество правил и взаимосвязей, крайне сложно. Для того чтобы при этом ничего не упустить, требуются огромные умственные усилия.
В результате, во-первых, прежде чем приступить к написанию текста программы, приходится дробить задачу на ряд мелких и решать их последовательно одну за другой. Но анализировать свойства создаваемой программы на соответствие реальной задаче можно только на высоком уровне абстракции, когда о реально работающем коде не идет и речи. Во-вторых, для реализации каждой подзадачи, в соответствии со всеми глобальными принципами и правилами, которые были определены раньше, требуется высокая степень концентрации. И, занимаясь непосредственно программированием, для успешной работы приходится удерживать в сознании все внутреннее устройство системы. Поэтому очень часто происходит так, что предметная область, для которой пишется программа, отодвигается на второй план. Срабатывает принцип наименьшего сопротивления, и полученный результат может не устраивать заказчика.
Технология системы Miracle является решением многих проблем программирования. Мы пришли к новому осознанию принципа Оккама - “не приумножай сущностей сверх необходимого”. Miracle - это компонентно-ориентированное программирование. Тем самым подчеркивается отличие от объектов в ООП. Источник происхождения компонентов Miracle недоступен разработчику, и он не загружает этим свое сознание. Эти компоненты объективно существуют - они неделимы, т. е. это - ни от чего не унаследованные сущности, и при этом самодостаточные (нет необходимости что-либо от них наследовать).
Правила работы с компонентами тоже максимально упрощены и сведены к элементарным действиям - подачам команд. Реакции компонента на внешние воздействия также элементарны - они либо происходят, либо нет.
Процессы и данные, над которыми производятся действия, разделены таким образом, что у них нет параметров. Это дает возможность даже не задумываться в деталях о том, что же конкретно обрабатывается. Потоки данных также проектируются независимо от действий, которые над этими данными производятся, что допускает формализацию проблемы потоков данных в стороне от деталей их конкретной обработки.
Таким образом, любые взаимосвязи между компонентами, устанавливаемые для получения работающей программы, имеют простейшую структуру - конкретная команда одного компонента подается в ответ на конкретное событие (реакцию) в другом компоненте. И эта связь не обременена какими-либо параметрами, т. е. представляет собой такую же элементарную сущность.
Комплексный подход в предлагаемом наборе компонентов практически исключает необходимость переходить на низкоуровневое программирование, сопряженное с упомянутыми выше проблемами. Однако даже если и возникнет такая необходимость, то факт, что создаваемая часть приложения тоже должна быть компонентом, уже предполагает простоту его использования на уровне стандартных компонентов, а сложность реализации останется ее внутренней проблемой.
Наконец, в технологии разработки Miracle предложен принцип раздельного проектирования структуры хранения данных и приложений, осуществляющих ввод, отображение и обработку. Разделение проведено таким образом, что эти части могут создаваться независимо и даже разными людьми. Распределение данных в сети по привилегиям пользователей, структура таблиц, алгоритмы заполнения ячеек устанавливаются независимо от того, какие приложения будут использовать эти данные. Проектируя приложения, нет необходимости создавать логику, определяющую распределение данных и обеспечивающую доступ к ней по определенным правилам. Эти правила задаются независимо и едины для всех приложений, использующих конкретные данные.
В конечном счете, и в технологии Miracle к этому созданы все предпосылки, разработчик может с чистой совестью посвятить основное время обдумыванию решаемой задачи, а не проблемам ее программирования.
Еше одна особенность этой технологии - многократное использование одних и тех же компонентов различными приложениями - обеспечивает возможность, изменяя один компонент, изменить поведение всех приложений, в работе которых он участвует. Разработчик может не только создавать системы программ в кратчайшие сроки, но и делать это по принципу прототипирования. То есть построить прототип будущей программы, реализовав лишь часть предполагаемых возможностей, и даже передать его в эксплуатацию. Впоследствии прототип можно постепенно, по мере необходимости, наращивать. Пользователи могут этого даже не заметить - в программе просто будут появляться новые возможности или изменяться старые, но целостность данных и системы сохранится. Сопровождение таких программ, очевидно, также не требует затрат, типично ассоциируемых с этим видом деятельности. Вносить изменения в программу легко, как и создавать ее - это утверждение верно для любых средств разработки, но в данном случае оно наконец-то приобрело положительный смысл.
Подводя итог, можно сказать, что Miracle - это комплексное решение по-новому осознанной, хотя и старой, но острой на сегодняшний день проблемы, с которой сталкивается разработчик сложных корпоративных приложений.
С автором статьи можно связаться по телефону: (095) 269-2267 или по адресу: pr@miracle.ru. 4
ВЯЧеслав Гостренко
Новизна любой технологии определяется одним из факторов: либо это новый способ решения старой проблемы, либо это иная постановка старого вопроса с разработкой способа его решения.
Сегодня существует целая армия пользователей персональных компьютеров. Если раньше человека, сидящего за компьютером, можно было смело отнести к классу особо посвященных людей - компьютерщиков, то теперь большинство пользователей - это люди, знающие о компьютере не больше, чем о кухонном комбайне. Многие из них не имеют времени или возможности научиться общению с компьютером на уровне понимания его внутреннего устройства и команд. Но соблазнительная стоимость и широкие возможности компьютера привлекают их. Круг задач, решаемых с применением ПК, расширяется и как следствие этого увеличивается потребность в новом прикладном ПО.
Однако средства разработки ПО, хотя и развивались все это время, но гораздо медленнее, чем происходило проникновение компьютеров в нашу повседневную жизнь. Для работы с этими средствами до сих пор требуются высококвалифицированные программисты. Несмотря на современные мощные средства разработки, программисты до сих пор вынуждены тратить не менее нескольких недель на проекты, уровень сложности которых хоть сколько-нибудь отличается от нуля.
Многие приложения не могут появиться на свет не только потому, что нет средств на их разработку, но и из-за того, что требуется слишком много времени для их проектирования и реализации. К моменту предполагаемого ввода в зксплуатацию набор свойств, которыми приложение должно обладать для адекватного выполнения своих задач может измениться настолько, что все придется переделывать заново, так и не приступив к эксплуатации. Внедрение информационных технологий в некоторых областях возможно только при наличии штата программистов, которые систематически вносят изменения в программы и следят за целостностью системы.
Технология создания приложений, используемая в инструментальной среде Miracle, решает данную проблему в двух направлениях. Во-первых, снижение требований к квалификации разработчика, а во-вторых, повышение скорости разработки вместе с одновременным снижением затрат на сопровождение и последующие изменения полученных систем.
Исторически развитие средств разработки было направлено на то, чтобы в процессе реализации крупных и сложных проектов программист мог наиболее оптимально использовать рабочее время. Достигалось это автоматизацией определенных участков цикла проектирования и кодирования прикладных программ, встраиванием в языки программирования новых, более эффективных средств структуризации и абстрагирования. Однако отсутствие комплексного подхода к автоматизации проектирования и программирования обусловили в качестве основы, “связующего вещества”, использование языков программирования, недалеко ушедших от Фортрана или даже макроассемблера. Другими словами, код представлен в виде последовательного текста, где описывается вызов различных функций с передачей им множества необходимых параметров.
Появление мощных средств структуризации (таких, как объектно-ориентированное программирование, ООП) и средств генерации кода (различные инструменты проектирования пользовательского интерфейса) не привело к изменению технологии создания прикладного ПО, а только упростило некоторые процессы. Основная же проблема программирования так и осталась нерешенной, а может быть, и неосознанной.
Возникает простой вопрос - почему так сложно программировать и почему этот процесс требует высокой квалификации и значительных затрат? Основная причина сложности в том, что средства разработки программ во многих случаях предполагают знание программистом внутренних механизмов операционной системы, используемых инструментов и библиотек.
Практически все существующие сегодня инструментальные средства и методы проектирования навязывают ряд принципов и правил. Они, с одной стороны, должны облегчить процесс получения конечного результата, но, с другой стороны, требуют постоянного внимания. Для того чтобы хорошо написать сложную программу, программист должен думать о ней постоянно, даже во время еды и сна. В противном случае он, не осознав поставленной задачи и не учтя всех важных факторов, допустит слишком много ошибок.
Однако возможности человеческого мозга не безграничны. Человек в каждый момент времени может оперировать лишь ограниченным числом правил. Конечно, количество сущностей, хранящихся у нас в сознании, огромно. Мы можем поднимать из его глубин и применять в рассуждениях их все сразу, но делать выводы, учитывая одновременно множество правил и взаимосвязей, крайне сложно. Для того чтобы при этом ничего не упустить, требуются огромные умственные усилия.
В результате, во-первых, прежде чем приступить к написанию текста программы, приходится дробить задачу на ряд мелких и решать их последовательно одну за другой. Но анализировать свойства создаваемой программы на соответствие реальной задаче можно только на высоком уровне абстракции, когда о реально работающем коде не идет и речи. Во-вторых, для реализации каждой подзадачи, в соответствии со всеми глобальными принципами и правилами, которые были определены раньше, требуется высокая степень концентрации. И, занимаясь непосредственно программированием, для успешной работы приходится удерживать в сознании все внутреннее устройство системы. Поэтому очень часто происходит так, что предметная область, для которой пишется программа, отодвигается на второй план. Срабатывает принцип наименьшего сопротивления, и полученный результат может не устраивать заказчика.
Технология системы Miracle является решением многих проблем программирования. Мы пришли к новому осознанию принципа Оккама - “не приумножай сущностей сверх необходимого”. Miracle - это компонентно-ориентированное программирование. Тем самым подчеркивается отличие от объектов в ООП. Источник происхождения компонентов Miracle недоступен разработчику, и он не загружает этим свое сознание. Эти компоненты объективно существуют - они неделимы, т. е. это - ни от чего не унаследованные сущности, и при этом самодостаточные (нет необходимости что-либо от них наследовать).
Правила работы с компонентами тоже максимально упрощены и сведены к элементарным действиям - подачам команд. Реакции компонента на внешние воздействия также элементарны - они либо происходят, либо нет.
Процессы и данные, над которыми производятся действия, разделены таким образом, что у них нет параметров. Это дает возможность даже не задумываться в деталях о том, что же конкретно обрабатывается. Потоки данных также проектируются независимо от действий, которые над этими данными производятся, что допускает формализацию проблемы потоков данных в стороне от деталей их конкретной обработки.
Таким образом, любые взаимосвязи между компонентами, устанавливаемые для получения работающей программы, имеют простейшую структуру - конкретная команда одного компонента подается в ответ на конкретное событие (реакцию) в другом компоненте. И эта связь не обременена какими-либо параметрами, т. е. представляет собой такую же элементарную сущность.
Комплексный подход в предлагаемом наборе компонентов практически исключает необходимость переходить на низкоуровневое программирование, сопряженное с упомянутыми выше проблемами. Однако даже если и возникнет такая необходимость, то факт, что создаваемая часть приложения тоже должна быть компонентом, уже предполагает простоту его использования на уровне стандартных компонентов, а сложность реализации останется ее внутренней проблемой.
Наконец, в технологии разработки Miracle предложен принцип раздельного проектирования структуры хранения данных и приложений, осуществляющих ввод, отображение и обработку. Разделение проведено таким образом, что эти части могут создаваться независимо и даже разными людьми. Распределение данных в сети по привилегиям пользователей, структура таблиц, алгоритмы заполнения ячеек устанавливаются независимо от того, какие приложения будут использовать эти данные. Проектируя приложения, нет необходимости создавать логику, определяющую распределение данных и обеспечивающую доступ к ней по определенным правилам. Эти правила задаются независимо и едины для всех приложений, использующих конкретные данные.
В конечном счете, и в технологии Miracle к этому созданы все предпосылки, разработчик может с чистой совестью посвятить основное время обдумыванию решаемой задачи, а не проблемам ее программирования.
Еше одна особенность этой технологии - многократное использование одних и тех же компонентов различными приложениями - обеспечивает возможность, изменяя один компонент, изменить поведение всех приложений, в работе которых он участвует. Разработчик может не только создавать системы программ в кратчайшие сроки, но и делать это по принципу прототипирования. То есть построить прототип будущей программы, реализовав лишь часть предполагаемых возможностей, и даже передать его в эксплуатацию. Впоследствии прототип можно постепенно, по мере необходимости, наращивать. Пользователи могут этого даже не заметить - в программе просто будут появляться новые возможности или изменяться старые, но целостность данных и системы сохранится. Сопровождение таких программ, очевидно, также не требует затрат, типично ассоциируемых с этим видом деятельности. Вносить изменения в программу легко, как и создавать ее - это утверждение верно для любых средств разработки, но в данном случае оно наконец-то приобрело положительный смысл.
Подводя итог, можно сказать, что Miracle - это комплексное решение по-новому осознанной, хотя и старой, но острой на сегодняшний день проблемы, с которой сталкивается разработчик сложных корпоративных приложений.
С автором статьи можно связаться по телефону: (095) 269-2267 или по адресу: pr@miracle.ru. 4
Вячеслав Гостренко