Информатика в семи томах




НазваниеИнформатика в семи томах
страница8/24
Дата27.11.2012
Размер3.16 Mb.
ТипДокументы
1   ...   4   5   6   7   8   9   10   11   ...   24
Глава 3. Повторное использование разработок


Повторное использование (транслитерация английского слова reuse - риюз) программ, лексиконов, БД, БЗ и запросов (для краткости будем далее этот перечень здесь именовать субпрограммой) является новой проблемой современного программирования и информатики, обобщающей ряд частных проблем. Повторное использование программ нужно распространять на. БЗ, которые вообще отличаются от программ устойчивым постоянством. Кроме того, БЗ представляют класс логических программ. Идея повторного использования родилась (если оценивать историю вопроса) в программировании, она легко распространяется на БЗ и запросы. Риюз универсален настолько, что его можно назвать информатическим методом. Надо быть осторожным и говорить вначале слово программирование, а затем слово информатика, если рассматриваем риюз. В рамках возможностей ФЯ (например, Ада) и ЯПП с привлечением системной и ситуационной моделей процесса разработки программного обеспечения исследуются проблематика и предпосылки повторного использования программ (или некоторой вещи), взаимосвязь концепций риюза и современного программирования (информатики). В главе дана оценка эффективности риюза. Предлагаются методология реализации риюза и характеристики инструментальных средств поддержки.


3.I. Общие концепции


Побудительными причинами появления в информатике риюза явились публикация о сборочном программировании, разворачивание исследований по риюзу и осмысление всей проблематики повторного использования знаний, программ и заданий и всех атрибутов жизненного цикла объектов, обеспечивающих эффективное использование ВМ. Представляется полезным осмыслить понятие повторного использования субпрограмм в контексте ЖЦ любого объекта. Принципиально ничто не мешает повторно использовать результаты любого этапа ЖЦ, например проекта, отдельного модуля, всей субпрограммы, документации на знания и т.п. При этом возникает проблема развития языков представления знаний любого вида и программного инструментария со своими методами и средствами. Мы делим ЖЦ на четыре фундаментальных этапа: изобретание, проектирование, разработка и сопровождение. С этой точки зрения повторное использование результатов по этапам ЖЦ можно квалифицировать как допроектирование или доконструирование. Такой подход шире и опирается на публикации уже известные и приведенные в списке литературы.


В современном программировании возникла новая парадигма - повторное проектирование и использование программного обеспечения в широком смысле этого понятия. Ниже мы рассмотрим основные предпосылки появления этой парадигмы. Будем кратко именовать повторное проектирование и использование знаний и программ словом риюз. Риюз существовал всегда. Но это не приводило к существенному сокращению расходов на программирование. Желание понять причины явно недостаточного внимания к риюзу и чрезвычайно большие затраты на дублирующие работы, которые оцениваются примерно в 70-80% от общих затрат, заставили разработчиков по-новому взглянуть на риюз. Применение для знаний эффективнее применения для программ, поскольку допроектирование или доконструирование знаний значительно проще по времени и затратам труда.


Любая деятельность по созданию субпрограмм связана с разработкой или с использованием имеющихся методов программирования, которые должны быть подкреплены соответствующими инструментальными средствами, определенной степенью абстракции и формализации, автоматизацией. Некоторые из этих вопросов будут рассмотрены ниже. Для иллюстрации мощности понятия и методов риюза рассмотрим список известных в практике программирования конкретных методик.


Среди методик следует отметить такие:

I) Простой повторный запуск программы для контроля работы ВМ или самой программы (подтверждение), а также для счета очередного варианта задачи. Заметим, что повторный прогон программы реального времени может показать неожиданные результаты.

2) Решение задачи с различными исходными данными, как указано выше, также представляет собой повторное использование программы. Этот пример методики является самым распространенным и указывает на продуктивность риюза.

3) Использование старой субпрограммы с новым методом решения проблемы представляет риюз. За счет этого получаются новое качество субпрограммы и экономия ресурсов ВМ при решении старых задач.

4) Если программа собрана из подпрограмм библиотеки, то можно сказать, что использован риюз для частей программы. Сборочное программирование - это один из фундаментальных методов риюза. Сборочное программирование - это разработка нового программного проекта или его рабочих версий нового применения, путем повторного использования компонент с или без модификации их спецификации или тела, с или без построения новых компонент. В самом простом виде сборочное программирование реализуется в языке Ада (компиляция из подпрограмм библиотеки) [Джехани88]. В особенности хорошей иллюстрацией риюза использование БЗ из библиотеки.

5) Программирование с использованием пакетов прикладных программ представляет еще один широко известный метод риюза. Такой подход напоминает сборку программ из подпрограмм.

6) Если предыдущие примеры применения риюза иллюстрировали, как правило, использование модификации управления в программах, то последующие примеры показывают использование модификации данных. Например, модификация предметной области влечет частичное изменение описаний в субпрограмме и получение другой субпрограммы. Такая форма риюза характерна для ассемблерных языков программирования и поддерживается макроассемблером. Другим ярким примером является аппарат настраиваемых подпрограмм и пакетов в языке Ада, который можно считать аналогом макросредств в языке высокого уровня.

7) Модификация проблемной области приводит к изменению некоторых модулей субпрограммы, но для основной части субпрограммы может применяться риюз. Практически важной формой риюза является использование методов переноса субпрограмм на ВМ различных архитектур. И здесь язык Ада может показать широкие возможности для построения субпрограмм, независящих от свойств конкретных архитектур ВМ. Еще пример. Реализация языка Си на различных архитектурах ВМ привела к переносу субпрограмм на такие ВМ.

8) К риюзу в широком смысле следует отнести повторное использование варианта спецификации проекта программного обеспечения (и не только). Если язык предусматривает разработку проекта программы, то риюз внедряется автоматически, как это свойственно языку Ада.

9) С таким же успехом можно говорить о повторном использовании готовой схемы решения проблемы (или задачи, задания). Эта методика является наиболее распространенной в практике использования ВМ. Широко известный метод структурного программирования указывает на приемы использования готовых структур программ для построения новых программ. Язык Ада содержит прекрасный ассортимент хорошо структурированных конструкций операторов и описаний. ИП предусматривает автоматическое внедрение риюза БЗ, анкетного и шаблонного запросов, что представляет собой внедрение риюза в рамках Интеллсист.

10) Использование одной и той же математической модели при решении различных и конкретных задач также распространено достаточно широко, и это обстоятельство определяет высокую эффективность математического моделирования.

11) К риюзу следует отнести также повторное использование требований к разработке субпрограмм. Условия применения программ чаще всего повторяются, поэтому требования к работе субпрограмм становятся одинаковыми. Может быть в связи с этим разделы о требованиях к программам в технических заданиях одинаковы.

12) И последняя методика: использование одной и той же цели для создания различных субпрограмм. Общая цель порождает одинаковые структуры субпрограмм.


В [Красилов91а] рассмотрены проблемы повторного использования компоненты программных систем, они будут затрагиваться ниже. На риюз можно посмотреть еще шире. Логично отнести к риюзу повторное использование языка программирования, ВМ одинаковой модели и др. Так или иначе приведенный перечень методик достаточно полно характеризует историю риюза, богатство методологии риюза и заставляет внимательно присмотреться к методам и инструментальным средствам повторного проектирования, программирования и использования программ.


Подытоживая содержание примеров методик можно определить риюз как метод информатики, представляющий совокупность способов и средств использования имеющихся и отработанных субпрограмм и БД в новых проектах путем настройки, адаптации, модификации или прямого применения. Как обычно краткое определение не составляет полной картины проблемы, поэтому в дальнейшем делается попытка шире раскрыть смысл риюза. Цель настоящей главы - привлечь внимание программистов всех категорий (в том числе и прямых пользователей ВМ) к одному из эффективных методов информатики.


Заметим, что перечисление примеров риюза может привести к выводу, что риюз и проблемы риюза просты. Попробуем опровергнуть это мнение. Несомненно, что риюз - продление жизни субпрограмм или их частей. Сейчас обратим внимание только на одну главную проблему риюза: что необходимо сделать, чтобы при создании новых программ обеспечить риюз в наибольшей степени. Можно сразу предложить одну из методик решения этой проблемы: внедрение единого языка программирования, роль которого должен сыграть, например язык Ада. Предложение основывается на том факте, что язык Ада реализует более 50 методов программирования, многие из которых поддерживают риюз [Красилов88б]. Роль единого языка логического программирования в ИП играет ЯПП (или ЕЯ). Следует напомнить, что под субпрограммой здесь имеются в виду различные объекты, в том числе лексиконы, БЗ, шаблоны, запросы к Интеллсист и др. Для краткости используется слово субпрограмма, а все методы программирования распространяются на эти объекты.


В соответствии с рекомендациями [Красилов88б] можно выставить ряд требований к субпрограмме и технологии ее разработки, выполнение которых обеспечивает в значительной степени риюз (риюзность субпрограммы). Такими требованиями являются:

  • модульность, структурированность и блочность, как основы хорошего стиля программирования (для БЗ и запросов, использующих ЯПП, блоком можно считать абзац);

  • проверяемость (или контролируемость), документируемость и читаемость, как основа для обеспечения переносимости субпрограммы (ЯПП это требование поддерживает, так как он является частью ЕЯ);

  • планируемость и автоматизируемость, как основа для ведения разработки методом риюза (для ЯПП накоплен обширный опыт выполнения этого требования);

  • подтверждаемость, верифицируемость и внедряемость, как основа для успешного внедрения средств программотехники или знаниелогии в методологию риюза.


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


3.2. Основные предпосылки исследования


В программистской литературе правильно подмечено, что основная причина исследования риюза кроется в естественной деятельности специалиста по информатике, связанной, с одной стороны, с внедрением ВМ в различные сферы деятельности человека, а с другой - общностью основ применения ВМ. Поэтому одна и та же субпрограмма успешно используется в таких различных областях как: техника, геология, статистика, физика и т.п. Исследование и применение риюза стимулируется также дефицитом программистов. Имеются и другие, может быть менее веские причины. Вот некоторые из них:

  • медленно (независимо от экономических факторов) решается проблема ускорения процесса реализации больших программных проектов для народного хозяйства;

  • многоязычие одной или нескольких различных ВМ становится серьезным препятствием для достижения высокой эффективности процессов создания программ;

  • дублирующие разработки программ чаще всего возникают из-за отсутствия эффективных методов проектирования и использования таких свойств программ, которые способствуют повторному их использованию;

  • имеются и организационно-экономические причины, вызванные отсутствием рынка машинного знания, подкрепленного соответствующими законодательными актами;


К этому перечню необходимо добавить следующие аргументы в пользу риюза, особенно важные для систем, работающих в реальном масштабе времени:

  • техническая система, которая имеет встроенную ВМ, развивается значительно медленнее, чем темп обновления встроенных ВМ, в таком случае необходимо обеспечить повторное использование субпрограмм предыдущей ВМ;

  • идеология программирования и алгоритмы моделирования технических систем в большинстве случаев сохраняются, они стабильны и долгоживущие;

  • испытанные в реальной работе субпрограммы при риюзе гарантируют сокращение стоимости разработки и эксплуатации, повышение надежности субпрограммы и в целом качества самой субпрограммы и ее использования;

  • известна позитивная роль консерватизма разработчиков, заказчиков и пользователей, обученных одной и той же субпрограмме, одному и тому же языку, одним и тем же средствам и методам информатики.

Сказанное в полной мере относится к синтезированным субпрограммам, полученным в инструментарии Интеллсист и применяемым во встроенных системах. Можно подробнее раскрыть каждую в отдельности причину возникновения риюза. По-видимому, нет особой необходимости раскрывать их, читатель сам может это сделать с большим успехом. Мы лишь заострили его внимание на эффективность, значимость и полезность риюза для программирования систем реального времени.


Экспертную оценку экономической эффективности риюза можно дать, исходя из следующих, требующих дополнительных исследований, соображений: если стоимость разработанных программ составляет единицу, то цена повторно используемой программы равна по экспертной оценке десятой части от указанной единицы. Приведенная оценка может быть и ошибочной, поскольку имеющиеся исходные данные для оценки весьма ненадежны. Ясно, что экономическая эффективность риюза зависит от этапа ЖЦ и используемого метода риюза, поэтому приведенная оценка отражает имеющийся опыт эксперта. Для более точной оценки необходима достоверная статистика по реальным применениям риюза в определенных методологических рамках.


Исследование причин возникновения риюза - это прогноз ЖЦ риюза. От того насколько правильно оценены причины, настолько достоверен прогноз в сравнительно молодом методе информатики, а также в методологии его применения. Возможность эффективного внедрения риюза во многом обеспечивается концепциями хорошего стиля программирования:

  • использование уровней абстракции для объектов субпрограммы поддерживает риюз,

  • сохранение уровней структур управления упрощает процедуру необходимых изменений при создании новой субпрограммы,

  • аналогично, структуризация данных упрощает процедуру необходимых изменений при создании новых БД и БЗ,

  • систематичность процессов создания субпрограмм и данных от начала до завершения проекта обеспечивает удешевление риюза,

  • моделирование является составной частью хорошей технологии программирования и в то же время служит концептуальной основой применения риюза,

  • иерархия и модульность также составляют концептуальную основу применения риюза,

  • наконец, активная ориентация на риюз также является хорошей концепцией, стимулирующей развитие методов риюза.


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


3.3. Модели создания субпрограмм


Ниже поясняются две модели создания программ:

  • Системная модель,

  • Ситуационная модель.


3.3.1. Системная модель процесса создания субпрограммы и риюз. Каждое рассмотрение новой области или нового метода информатики возвращает исследователя к разбору цепочки (системной модели) действий от постановки цели использования ВМ до технологического использования ВМ. Заметим, что каждое новое обращение к цепочке побуждает нас к ее расширению, более детальному разбору, выявлению новых действий этой цепи. Таким образом, освоение новой области информатики углубляет наши знания и позволяет более глубоко проникнуть в методологию информатики.


Ниже приведена таблица шагов упомянутой системной модели и степень автоматизации процесса, характеризующая некоторые фундаментальные подходы в информатике. В таблице расширен традиционный перечень этапов использования ВМ. Словом «да»» обозначены действия, которые автоматизируются в зависимости от общей методологии создания программы. Слова «да» поставлены в тех местах, где имеется эффект от полной или частичной автоматизации конкретного процесса, указанного в первой колонке. При традиционном подходе автоматизируются работы, выполняемые после написания программы на некотором языке.


Предварительные пояснения к таблице. Простой синтез программ использует автоматическое доказательство спецификаций проблемы [Красилов85в, 87б] для извлечения текста программы. Сложный синтез программы включает аналитические выкладки для формирования новых математических методов решения данной проблемы, например, приводящих к построению спецификаций проблемы, к которым может применяться простой метод синтеза программы. Синтез программ в Интеллсист является именно таким. Как было показано на примерах, риюз применим ко всей совокупности действий по созданию субпрограммы. Степень автоматизации риюза зависит от разработанности и формализма соответствующих методов применения риюза. Согласно приведенной таблице риюз выглядит перспективно (если не принимать во внимание автоматический синтез субпрограмм).


Системная модель процесса создания субпрограмм позволила выделить риюз как средство информатики, более эффективное по сравнению с другими методами программирования. Конечно, приведенная характеристика риюза требует более тщательного исследования, чем простое «да – нет» голосования. Для этого необходимо привлечь значительно больший объем фактического материала, а также выработать методику и номенклатуру качественных и количественных показателей риюза. Основная цель раздела привлечь внимание читателя к проблеме сопоставления свойств процессов риюза и широко известных процессов создания субпрограмм (лексиконов, БЗ и запросов).


Таблица Обзор операций по созданию субпрограмм

Действия по созданию субпрограммы

Существующая традиция

Простой синтез

Сложный синтез

Риюз

Постановка цели использования ВМ

нет

нет

нет

да

Разработка требований к субпрограмме

нет

нет

нет

да

Математический анализ задачи

нет

нет

нет

да

Разработка численного метода

нет

нет

да

да

Построение схемы решения проблемы

нет

нет

да

да

Спецификация проблемы

нет

нет

да

да

Доказательство проблемы

нет

да

да

да

Построение алгоритма

нет

да

да

да

Применение языка программирования

нет

да

да

да

Трансляция субпрограммы

да

да

да

да

Выполнение субпрограммы

да

да

да

да

Анализ полученных результатов

да

да

да

да


3.3.2. Ситуационная модель создания субпрограмм. Ситуационная модель, в соответствии с общим определением, представляет собой мысленное формирование ситуаций с субпрограммами, мотивацию проблемы, решаемой с их помощью, характеристику цели создания субпрограмм, оценку их состояния. Ситуационная модель в нашем случае позволяет изучать разнообразные стандартные ситуации и действия, связанные с проектированием и разработкой субпрограмм. Она имеет свое отношение к действиям по созданию субпрограмм и к состоянию реального мира. И при таком подходе к риюзу требуется расширение в представлениях цепочки действий. Ситуационная модель создания субпрограмм может быть представлена четырьмя этапами (изобретание, проектирование, разработка и сопровождение программ), фазами (их четыре на каждом этапе) и работами (их восемь для каждой фазы). Каждая технологическая операция (реально их может быть более 400) использования ВМ в рамках какой-либо работы может рассматриваться с точки зрения риюза. И здесь можно обнаружить интересные параллели после сопоставления технологических операций и операций риюза.


Ситуационная модель намного шире системной модели как по существу метода описания предмета моделирования, так и по возможности конкретизации способов практического использования риюза. Она позволяет с достаточной полнотой представить большую часть преимуществ риюза, а также дает возможность конструктивно подойти к количественным оценкам выгод от внедрения и эффективности риюза. Такое суждение обосновывается главным образом информативностью и полнотой представления в модели процесса создания субпрограмм.


3.4. Жизненный цикл программ в риюзе


Оценить риюз с позиции ЖЦ программ можно несколькими путями, отметив основные с нашей точки зрения подходы.

1) Прежде всего рассмотрим общие соображения:

  • ЖЦ субпрограммы является инвариантом, что и оправдывает применение к нему методологии риюза,

  • риюзом в чистом виде является использование аналогов и прототипов в программировании и информатике,

  • само понятие технологии подразумевает выявление и внедрение риюза, это в особенности относится к программным средствам поддержки ЖЦ,

  • исследование и применение риюза скорее всего должны ориентироваться на дорогие в смысле затрат ресурсов этапы.

2) Для оценки возможностей применения риюза можно рассмотреть таблицу всех технологических операций. Из сопоставления затрат на новые программы и программы, полученные в результате применения риюза будут видны необходимость, возможность и эффективность риюза.

3) Технологический маршрут создания субпрограмм методом риюза сам является предметом исследований.


3.5. Методология реализации риюза


Обычно рассматривают следующие методы, которые являются наиболее яркими средствами реализации риюза:

  • разработка и применение метакомпилятора для генерации конкретного компилятора с некоторого исходного языка на некоторый рабочий язык;

  • применение микроассемблерных языков программирования;

  • проведение моделирования предметной области;

  • использование трансформационного метода преобразования текстов исходных программ для получения новых субпрограмм;

  • разработка и применение конверторов одного языка высокого уровня в другой язык высокого уровня;

  • широкое применение библиотек субподпрограмм и пакетов прикладных программ;

  • средства непроцедурного программирования;

  • использование языка программирования Ада [Джехани88, Красилов86б, 87а, 88б, 89в, 91а],

  • применение Интеллсист на основе ЯПП.

Последние две строчки выглядит несколько предвзято. Однако тщательное исследование языков Ада, ЯПП и методов, формализованных в языке, убедительно показывает правомерность этих строчек.


3.5.1. Уровни абстракции и риюз. Широко известен принцип сокрытия данных, операций и управления, впервые сформулированный Парнасом. Он позволяет строить уровни абстракции в программировании, как впрочем и в информатике. Уровни сокрытия, или уровни абстракции (именно это теперь является главным), используемые в методах риюза, помогают уточнять понятие риюза и раскрывают новые области применения риюза, а также высвечивают его проблематику.


Уровни абстракции зарождались постепенно, как правило в том порядке, который приведен ниже, они относятся прежде всего к средствам реализации алгоритмов и субпрограмм. Вот перечень сопоставлений уровней абстракции, относящихся к указанному предмету, и их конкретизации, полнее всего представленных в языке Ада и ЯПП:


Номер

Конкретный код

Абстракция

1

код

лексемы

2

величина

идентификатор или термин и их описания

3

множество данных или смыслов понятия

тип данных и его описание

4

скобочная формула

выражение

5

единица действия

оператор или вызов процедуры

6

технологическая или программная единица

модуль или блок и абзац

7

проект модуля

спецификация модуля (его описание)

8

программный шаблон

настройка подпрограммы на объекты, типы и подпрограммы

9

проблема

спецификация проблемы (ее описание) или запрос

10

метод решения

математика проблемы или знания

11

логика решения

схема решения или логический вывод

12

знание

спецификация исчисления или совокупность прикладных аксиом

13

постановка проблемы

спецификация требований или формулировка запроса

14

цель

спецификация цели


Указанный перечень абстракций - это средство обеспечения риюза, поскольку абстракция позволяет реализовать независимость отдельных экземпляров конкретизации друг от друга. Сама абстракция может использоваться вновь без каких-либо изменений. Абстракция любого уровня является резервом для риюза предыдущего уровня. Это обстоятельство должно находиться в основе реализации риюзности вновь разрабатываемой субпрограммы.


Например, язык Ада обеспечивает и поддерживает формализацию первых восьми уровней абстракции в указанном выше перечислении, в то время как ЯПП обеспечивает и поддерживает формализацию всех уровней. Так как каждый язык формализует соответствующие ему уровни синтаксически, то система программирования на базе ЯПП автоматизирует все процессы контроля и подготовки рабочих субпрограмм в соответствии с указанными уровнями абстракции. Многие широко распространенные языки программирования поддерживают меньшее число уровней. Это тем более становится явным, если приведенный перечень сопоставлений сделать детальным. Каждый уровень абстракции подразумевает тот или иной метод скрытия данных, операций и управления. Детальное рассмотрение о том, какое уровень реализует метод скрытия, предоставляется читателю.


3.5.2. Методология риюза. Вопросов, относящихся к методологии реализации риюза, по количеству столько же сколько вопросов при решении проблем программирования. Качество же вопросов намного выше, поскольку в такой общей постановке проблема риюза возникла только в последнее время. Проведение аналогии с программированием помогает разобраться в целом по проблеме риюза и ответить на имеющиеся вопросы. Действительно, необходимо рассмотреть технологию риюза и соответствующие технологические, инструментальные и сервисные средства. Совпадение или близость многих методологических принципов риюза и программирования совершенно не означает, что весь арсенал средств программирования переносится на риюз автоматически. Попробуем показать это читателю.


Системного программиста, да и любого другого программиста не удивит данный список методов и средств риюза. Каждая строчка указывает на возможность риюза (в смысле повторного использования) той или иной стороны программирования. Эти методы являются основными для реализации риюза. Можно конкретизировать методы вширь и вглубь. Однако мы оставляем это дело для читателя. Важно подчеркнуть в заключении раздела, что методология риюза почти ничем не отличается от методологии программирования и методологии информатики.


3.6.Инструментальные средства риюза


Инструмент риюза имеет свои особенности, которые и рассмотрены ниже.


3.6.1. Задачи внедрения риюза. В работах [Бар88, Боэм85, Гантер81, Красилов88б, 91а], которые стимулировали появление этого раздела, перечислены основные действия при решении задачи применения риюза. (В данном случае задача - это оперативная тактическая проблема, решение которой определяет целенаправленное эффективное применение риюза.) Такими действиями относительно проекта субпрограммы, кода и документации считаются:

  • познание того, что может делать субпрограмма,

  • понимание того, как это может делать субпрограмма,

  • выделение необходимых частей (идентификация функций и структуры),

  • выбор методов модификации субпрограмм,

  • доконструирование (изменение функций и структуры).

Некоторые характеристики таких понятий, как переносимость, изменяемость, ремонтопригодность и т.п., помогают глубже понять особенности перечисленных действий.


В этой связи можно опять вспомнить главную проблему риюза и переформулировать ее как проблему риюзности субпрограмм, проектов и документации. Свойство риюзности должно быть результатом внедрения промышленных методов проектирования, разработки и сопровождения ПО и мерой качества любого субпрограммного продукта. В таком аспекте обеспечение риюзности субпрограмм - это одна из главных задач технологии программирования (ПП и ИП). Проектирование риюза неотделимо от процесса проектирования и реализации ЖЦ субпрограммы. Проектирование риюза - это реализация принципа непрерывного программирования на протяжении ЖЦ. Свойство риюзности субпрограмм - это качество, обеспечивающее накопление интеллектуального продукта. Познание и понимание субпрограмм с необходимостью включают поиск ошибок, умение сопровождать субпрограммы и применять их в разнообразных ситуациях, находить новое использование субпрограмм. Для реализации понимания, познания, выделения и доконструирования обычно должны проделываться обширные работы следующего содержания [Красилов91а]:

  • активное исследование субпрограмм прогонами, экспериментами (методами черного ящика),

  • изучение документации и изданий,

  • использование машинного самообучения,

  • организация обучения без анализа схемы выполнения субпрограмм,

  • обращение за помощью к специалистам (получение консультации),

  • поиск подсказки,

  • постановка вопросов, соответствующих знаниям,

  • поиск знаний в случае его недостаточности,

  • групповая учеба.

Некоторые работы автоматизированы в ИП (см. т.7).


Языки высокого уровня и языки спецификаций способствуют быстрому пониманию субпрограмм. Это же относится и к языку Ада и в особенности к ЯПП. Здесь уместно заметить, что достоинства языка Ада, обеспечивающие модульность, структурированность, читабельность и документируемость субпрограмм, подтверждают роль языка высокого уровня для риюза. Например, модульность и структурированность субпрограмм позволяют выполнить действие по выделению ее частей. Полная автоматизация переработки знаний, представленных на ЯПП обеспечивают весьма высокое понимание субпрограмм.


Пожалуй, самым неопределенным среди указанных действий является «доконструирование». По-видимому, эта неопределенность связана с отсутствием подходящих методов спецификации субпрограмм, изменение которых обеспечивало бы быстрое изменение самих субпрограмм. Здесь могут существенно помочь методы пошагового программирования. Возможно, что имеются и другие подходы. Можно привести примеры автоматической спецификации и автоматический синтез субпрограмм.


3.6.2. Инструментарий. Будем использовать в этом разделе еще одно английское слово со следующей транслитерацией - кит (в переводе слово kit обозначает ранец, багаж, инструмент). Это слово как нельзя лучше всего подходит ко всем вопросам создания инструментальных средств для риюза. Отметим несколько главных кит`ов.


Первый кит - кит визуализации. Это средство должно обеспечить максимальное познание субпрограммы и документации. Главное требование к этому кит`у состоит в абстрагировании от второстепенного. Важно, чтобы визуализация субпрограмм существенно отличалась от дампа всякого рода. Избирательность, форма и средство визуализации составляют своего рода проблему системного программирования, которая не решена в современной информатике.


Второй кит - кит документирования. Это средство должно обеспечивать в самых лучших традициях документами все стадии риюза. При анализе проблем документирования, каждый системный программист может сформулировать требования и задачи такого кит`а.


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


Четвертый кит - кит анализа потоков данных, операций и управления. Это средство должно способствовать максимальному пониманию субпрограммы и документации.


Пятый кит - кит критики перекликается с кит`ом анализа. Это инструментальное средство должно задавать вопросы пользователю для того, чтобы обратить внимание на все тонкие места в программе.


Шестой кит - кит подсказок является инструментальным средством, подчиненным всем другим кит`ам. Это средство схоже с ЭС и должно базироваться на богатой БЗ, накопленной в течении длительного времени.


Седьмой кит - кит обучения, способствующий познанию и пониманию всех составных частей программы или документации. Автоматизированное обучение, связанное с данным программным продуктом, важно для передачи опыта программирования вообще. Каждому ясно, какое значение придается средствам обучения при передаче субпрограмм.


Восьмой кит - кит объяснения должен отвечать на вопросы программиста, занимающегося риюзом. Этот кит сложен и требует, например, реализации диалогового интерфейса на ЕЯ. Пожалуй, эта особенность - главная и трудоемкая.


Последний, девятый кит - кит доконструирования является самым сложным кит`ом. Проблем в доконструировании более всего, и этому кит`у необходимо уделить самое пристальное внимание. Эта проблема еще не рассматривалась программистами широко. Простой пример решения проблемы - редактирование текстов программ.


Перечисленные инструментальные средства, как это можно обнаружить при внимательном рассмотрении, имеют свои специфические особенности, отличные от особенностей инструментальных средств программирования. Риюз вносит новые идеи и методы построения инструментальных средств в информатике. Здесь приходится признать, что дан только перечень инструментов, но не рассмотрены методы построения таких средств. Область информатики, изучающая инструментальные средства риюза, является новой и требует специального рассмотрения.


До сих пор мы рассматривали риюз субпрограмм и документации. Но риюз можно рассматривать и несколько шире. Риюз в общих чертах распространяется на повторное проектирование предмета, повторение процедур проектирования. Эти подходы характеризуют, и достаточно эффективно, информатику и ее методологию. Имеется еще ряд методик, которые примыкают к риюзу и должны снабжаться соответствующими инструментальными средствами. Во - первых, это создание прототипов субпрограмм и внедрение концепции прототипирования как метода информатики, включаемому в риюз с одной стороны. И, во-вторых, это макетирование, или построение макета субпрограмм или документов, как эффективный метод информатики, включаемый в риюз с другой стороны.


В заключении раздела заметим, что ИП опирается на инструментарий, который автоматизирует значительно большую часть операций и представляет пользователю соответствующие средства. Интеллсист представляет инструментальные средства для риюза знаний.


3.7. Оценка повторного использования и проблемы риюза


Все рассмотренные средства риюза хороши, полезны и приносят экономические выгоды. Они поддерживают и существенно улучшают характеристики технологии программирования, к которым можно отнести:

  • использование накопленного опыта современного программирования,

  • использование готовых субпрограммных и текстовых материалов,

  • существенное уменьшение общих затрат на создание субпрограммного продукта и СВТ,

  • обучение программистов хорошим субпрограммам и хорошему стилю в информатике, в применении ВМ,

  • существенное повышение надежности субпрограмм и процесса программирования,

  • существенное повышение эффективности субпрограмм и процессов создания субпрограмм, и, следовательно, повышения производительности труда программистов,

  • выработка прогрессивных требований к языкам, субпрограммам и документации.

Заметим, что оценка риюза сталкивается с вопросами развития программирования и информатики, раскрывает новый раздел современного программирования ВМ. Также заметим, что оценка риюза должна базироваться не только на качественных показателях, но и на количественных. К сожалению, сегодня еще рано обсуждать количественные оценки, их просто нет. Однако прогнозировать количественные оценки можно, отталкиваясь от качественных.


Основная оценка риюза должна связываться со степенью уменьшения дублирующих разработок, которые по оценкам некоторых специалистов достигает 70-80%. Полное устранение дублирующих промышленных разработок будет самой высокой оценкой риюза, характеризуемой повышением общей производительности труда в 4-5 раз. Сказанное не относится к рыночной конкуренции, стимулирующей улучшение качества субпрограммной продукции.


Рассмотрим проблемы риюза, как стратегические задачи, решения которых интересны по существу, но трудны из-за необходимости уточнения постановки задач и поиска подходящих методов их решения. Среди проблем отметим главные:

  • построение автоматизированного процесса ознакомления пользователя с наличием субподпрограмм в библиотеках или архивах,

  • изучение и внедрение действий, указанных в разделе 3.6,

  • определение понятий наследования субпрограмм и документации, а также выявление свойств соответствующих объектов,

  • создание и реализация иерархии языков представления данных, субпрограмм, спецификаций проблем, требований и целей,

  • исследование и разработка методики образования цены субпрограммы и документации для риюза,

  • создание условий для обеспечения риюза в процессе разработки субпрограмм и документации (экономических, технических, юридических),

  • внедрение средств автоматического получения субпрограмм.


Перечень проблем приводит к предварительной формулировке достаточных условий поддержки риюза:

  • автоматическое накопление БЗ из субпрограмм и описаний процессов программирования,

  • автоматическое использование БЗ для целей риюза,

  • учет в языках программирования средств обеспечения риюза,

  • автоматизация доконструирования и внесения изменений в субпрограммы и документацию,

  • автоматизация разработки и применения каждого инструментального средства, указанного в разделе 8,

  • автоматическое выполнение запросов на обучение методам риюза.


Перечисленные условия внедрения риюза должны учитываться на всех этапах, фазах и работах при создании повторно используемого субпрограммного продукта. Вместе с методами программирования и информатики методология риюза образуют фундаментальную архитектуру интеллектуальной среды проектирования субпрограмм. Здесь усматриваются основные проблемы и центр тяжести современного программирования и применения ВМ именно в риюзе - повторном использовании субпрограмм. Внедрение методологии риюза и реализация соответствующей инструментальной поддержки обеспечит основные атрибуты субпрограммы и процесса программирования: надежность и эффективность.


Вместе с общими проблемами можно указать на частные проблемы, например:

  • как эффективно видоизменять субпрограммы и документацию,

  • как собирать знания о работе субпрограммы,

  • при каких условиях можно и нужно применять риюз,

  • как применять инструментальные средства.


Этим перечнем мы хотели обратить внимание читателя на широту поля для исследователя современного состояния программирования и информатики. Заметим, что проблем и вопросов много, и они не зависят от того, что история риюза имеет такую же протяженность, как и само программирование. Заметим также, что данные выше перечни не претендуют на полноту. Например, кроме упомянутых выше методов реализации риюза (прямой риюз, использование модификаций, адаптация и настройка) имеются еще и такие: самоадаптация, самонастройка и генерация - все они требуют специального рассмотрения.


Глава 4. Методы, поддерживающие изобретание


Творчество - процесс получения нового знания. Информатика - технология получения нового знания. Творчество и информатика связаны между собой именно таким образом. Информатика исследует методы всех четырех этапов создания новой информационной вещи (под таким названием мы понимаем информацию или знание о предметах, явлениях и процессах). Наиболее новым и интересным является этап изобретания. Несмотря на уже достаточное количество публикаций по теме об алгоритме изобретения (многие идеи взяты из [Альтшуллер73 и 79]) на лицо имеется весьма слабая пропаганда методов и приемов получения нового знания. Роль информатики и состоит главным образом в изучении и применении таких методов и способов с применением ВМ (или без них). Для других этапов информацию по методологии информатики поставляет программирование и большая жизненная практика инженерии на ВМ. Первый же этап опирается на теорию изобретательства и многое заимствовано из нее так же, как другие три этапа заимствовали методы из программирования. Ясно, что методы изобретания не исчерпываются приведенными в данной главе, но они являются показательными для творчества в различных сферах деятельности человека. За более подробными сведениями необходимо обратиться к приведенной литературе.

1   ...   4   5   6   7   8   9   10   11   ...   24

Похожие:

Информатика в семи томах iconСобрание сочинений в семи томах 3 «Собрание сочинений в семи томах»: Время; 2008
Собрание сочинений М. М. Зощенко — самое полное издание прозы одного из крупнейших писателей-новаторов XX века. В него входят практически...
Информатика в семи томах iconИнформатика в семи томах
Определяются логические лексемы, фундаментальные операции, правила преобразования логических уравнений, а также металогика для обоснования...
Информатика в семи томах iconИнформатика в семи томах
Словарь поможет пользователям Интеллсист и разработчикам машинных систем разнообразного назначения в написании отчетов, руководств...
Информатика в семи томах iconВ семи томах том Информатика смысла Машинная лингвистика
Семантическая и распознающая грамматики связаны между собой как алгоритм и средства его реализации. Основой для контроля правильности...
Информатика в семи томах iconВ семи томах том Основы информатики (Введение в информатику)
Вм на основе своих общих и профессиональных знаний без привлечения программистов для решения задач, для разрешения вопросов или проблем...
Информатика в семи томах iconВ семи томах том Представление знаний (Структуры данных)
Приводимые примеры служат фрагментами прототипов записей знаний и запросов, предназначенных для создателей заданий и запросов к базе...
Информатика в семи томах iconРавительство республики башкортостан академия наук республики башкортостан история башкирского народа в семи томах том V уфа гилем 2010
Российская академия наук Уфимский научный центр ■ Институт истории, языка и литературы
Информатика в семи томах iconЬство республики башкортостан академия наук республики башкортостан история башкирского народа в семи томах том VI москва восточная литература 2011
Российская академия наук Уфимский научный центр Институт истории, языка и литературы
Информатика в семи томах iconВ семи томах том Интеллектуальные системы (Системы решения проблем)
Интеллсист, их структуры и технологии работы с инструментарием составляют центральную часть тома. Оценка возможностей Интеллсист...
Информатика в семи томах iconСтихотворения М. И. Цветаевой печатаются в основном по двум изданиям
Стихотворений (главным образом ранних, относящихся к 10-м годам) печатается по изданию: М. Цветаева. Неизданное: Стихи. Театр. Проза....
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница