Конструирование позволяет
использовать не только традиционные языки
программирования, но и специализированные
инструменты. Применение инструментальных
средств значительно облегчает процесс
разработки, делает более эффективным визуальный
контроль. Повышение роли визуального контроля
при организации различных контейнеров
и их схем, автоматизация проверки соответствия
интерфейсов дают основание для повышения
качества системы.
Разработка инструментальных
средств для конструирования контейнеров
для самых разных приложений является самостоятельной
задачей. Её качественное решение во многом
определяет гибкость и удобство работы
с системой. Крайне важно научиться смещать
акцент с решения задач пользователей на
разработку инструментов для решения пользовательских
задач. То есть, вместо того, чтобы решать
задачи за пользователей надо предоставить
пользователям удобные инструменты для
решения их задач. Такие инструменты, как
построители расчётных и аналитических
схем, средства создания различных диаграмм
и интерфейсов, описатели систем и т.п.
основываются на конструировании и применяются
пользователями. Создание инструментов
гораздо эффективнее решения отдельно взятой
задачи при разработке системы.
Конечное программное обеспечение
слишком погружено в детали конкретной
задачи и не может иметь высокого абстрактного
уровня. Как следствие, при таком подходе
сложно находить общие элементы и специфицировать
их для повторного использования. Если
разработка конечного программного обеспечения
разделена между несколькими разработчиками,
то выделение общих составляющих сопряжено
с ещё большими трудностями. В результате
разработчики теряют много времени на то,
чтобы многократно решать похожие проблемы
в каждом конкретном конечном программном
обеспечении. Это не только снижает производительность,
но и существенно усложняет отладку, передачу
разрабатываемого программного обеспечения
между разработчиками, обучение пользователей,
документирование и т.п.
Разработка инструментального
программного обеспечения наоборот ориентирована
на множество однородных задач и изначально
абстрагирована от деталей конкретных задач.
Здесь от разработчиков требуется не столько
знание специфики конкретной задачи, а
то, какие способы решения могут быть использованы
на всём множестве задач, знание того,
что необходимо пользователю для решения
данного множества задач. Таким образом,
абстрагирование при данном подходе становится
необходимым и важнейшим элементом разработки.
При этом надо стремиться к тому, чтобы
компоненты, полученные в результате анализа,
можно было использовать и в других проектах.
|