Имеющиеся CASE-системы разработки программного обеспечения (ПО) поддерживают элементы порождения программных систем. Более того, язык UML позволяет описать данные и методы классов, по которым произволится генерация «заготовок» текстов классов ПО. Специализированные редакторы позволяют строить макеты интерфейсов. Тексты порожденные ими более полные, но требуют вмешательства человека для окончательного формирования. Это примеры первичных порождений программных текстов...
Мера прождения программных текстов. Рано или поздно текст описания некоторого класса полагается завершенным. Простейшая мера прожденного текста есть процентная доля количества порожденных символов (последовательность WS-символов считается одним) к окончательному количеству символов в описании (без учета комментариев).
Мера порождения программных текстов позволяет поставить цель нашей группы более конкретно: повысить долю порожденных тестов с 5-15% до 85-95%.
Язык UML очень общий, а RUP — скорее можно считать метатехнологией проектирования и разработки программных систем. Это прекрасная основа для множества иных, частных, технологий создания конкретных классов программных комплексов.Для этого выбирается набор характерных особенностей проблемной ситуации создания ПО (характерный пример — экстремальное программирование). Каждая особенность рассматривается как класс приемов программирования. Такое сужение задачи позволяет создать типовые схемы программных решений и по ним генерировать необходимые тексты в нужных местах. Мы видим, что в этом случае контроль разработчика необходим, но имеет технический (не очень сложный) характер. Иное дело — разработка типовых схем программных решений (может быть очень сложной). Но иного реального пути нет, т.к. попытка написать программу умнее ее программиста — обречена на провал.
Что дает порождение текстов программ. В процессе накопления опыта каждый системный аналитик или программист накапливает логические «шаблоны» решения типовых задач в своей деятельности.
1. Какие из них, на Ваш взгляд, являются наиболее важными?
2. Как построить иерархию типовых решений?
3. Как добиться «единомыслия» в способах их решения?
4. Как обеспечить легкое пониммание и обучение стандартным типовым схемам программных решений?
5. Можно ли построить конструктивную теорию порождения текстов программ?
Это начальные вопросы проблемы порождения тестов программ.