Технологии программирования
Шрифт:
3.9. ПОДХОДЫ ИССЛЕДОВАТЕЛЬСКОГО ПРОГРАММИРОВАНИЯ
Исследовательское программирование имеет следующие особенности :
— разработчик ясно представляет направление поиска, но не знает заранее, как далеко он сможет продвинуться к цели;
— нет возможности предвидеть объем ресурсов для достижения того или иного результата;
— разработка не поддается детальному планированию, она ведется методом проб и ошибок;
— работа связана с конкретными исполнителями и отражает их личностные качества.
В основе исследовательского программирования
Компьютерный дарвинизм. Название данного подхода было предложено Кеном Томпсоном (Ken Thompson). Подход основан на принципе восходящей разработки, когда система строится вокруг ключевых компонентов и программ, которые создаются на ранних стадиях проекта, а затем постоянно модифицируются. Все более крупные блоки собираются из ранее созданных мелких блоков.
Компьютерный дарвинизм представляет собой метод проб и ошибок, основанный на интенсивном тестировании, причем на любом этапе система должна работать, даже если это минимальная версия того, к чему стремятся разработчики. Естественный отбор оставит только самое жизнеспособное.
Подход состоит из трех основных видов работ:
• макетирование (прототипирование);
• тестирование;
• отладка.
Одной из интересных особенностей подхода является максимально возможное распараллеливание процессов тестирования и отладки.
ВЫВОДЫ
• Традиционно инженеры стремились, а некоторые из них добивались не снижая качества проектов, значительного сокращения сроков проектирования.
• Инженерный технологический подход определяется спецификой комбинации стадий и видов работ, ориентированной на разные классы программного обеспечения и на особенности коллектива разработчиков.
• Основные группы инженерных технологических подходов: подходы со слабой формализацией, строгие и гибкие (адаптивные) подходы.
• Ранние технологические подходы не используют явных технологий и их обычно применяют только для очень маленьких проектов.
• Каскадные технологические подходы задают некоторую последовательность выполнения видов работ, обычно изображаемую в виде каскада (водопада).
• Каркасные подходы представляют собой каркас для видов работ. Одним из ярких представителей каркасного подхода является рациональный унифицированный подход к выполнению работ, поддерживаемый САПР на основе программного продукта Rational Rose фирмы "Rational Software Corporation".
• Термин "генетический" в названии группы генетических технологических подходов связывается с происхождением программы и дисциплиной ее создания.
• Адаптивные технологические подходы были задуманы как подходы, поддерживающие изменения. Они только выигрывают от изменений, даже когда изменения происходят в них самих. Наиболее бурно развивающимся подходом этой группы является экстремальное программирование.
• Выбор оптимального инженерного технологического подхода обеспечивает сокращение сроков выполнения проекта без снижения качества проекта.
Контрольные вопросы
1. За счет чего инженеры добиваются резкого сокращения сроков выполнения проектов?
2. Какие известны основные группы инженерных технологических подходов?
3. Какой классификационный
4. Какие инженерные технологические подходы были развиты в последнее время?
5. В чем состоят преимущества и недостатки каскадно-возвратного подхода по сравнению с классическим каскадным подходом?
6. Какой вид работ отсутствует в технологии стерильного цеха?
7. В каких случаях разумно применять эволюционное прототипирование?
8. Какие две основные черты, присущие быстрым разработкам, являются базовыми при экстремальном программировании?
9. В чем состоит суть адаптивной разработки?
Глава 4
СТРУКТУРА ДАННЫХ ПРОГРАММ
4.1. ПОНЯТИЕ СТРУКТУРЫ ДАННЫХ ПРОГРАММ
Под структурой данных программ в общем случае понимают множество элементов данных, множество связей между ними, а также характер их организованности.
Под организованностью данных понимается продуманное устройство с целью рационального использования по назначению. Примеры организованности данных: стек, организованный массивом; структура данных для хранения информации о студентах; файл, имеющий организацию текстового файла, байтная организация физической памяти машины.
Н. Вирт определил понятие программы следующим образом:
Простейшие структуры данных, реализуемые языком программирования, называют также стандартными типами данных. Многие языки программирования позволяют на основе стандартных типов строить типы данных, определенные программистом (пользователем).
Что же характеризует данные более содержательно, чем значения? В 1973 г. Н. Виртом была опубликована статья "Типы данных — это не значения". С его точки зрения тип данных — это множество значений. В статье говорилось также, что данные прежде всего характеризуются набором операций, которые можно выполнять над этими данными, множеством значений. Этот взгляд и дал миру впоследствии некоторые очень полезные идеи. Главная формула, которой стали придерживаться:
Важно понять, что понятия данных и операций очень взаимосвязаны. Пусть есть некоторая структура данных, для которой существует операция Length, которая возвращает длину этой структуры в некоторых единицах. Возникает вопрос: есть ли где-то данные, называющиеся длиной, или нет. С содержательной точки зрения это совершенно неважно. Если эта операция применяется к строкам, признак конца которых ноль (null terminated string), то вычисление длины — это, действительно, операция, требующая вычислений. Если эта операция применяется к строкам, первый байт которых означает длину строки, а дальше идет сама строка (как в Turbo Pascal), то здесь происходит просто взятие данных из памяти, т. е. длина может быть операцией, а может быть данными, хотя это и неважно для программиста.