Инструмент
posted in Инженерия ПО |
Качество выполнения работы определяется, прежде всего, двумя факторами: квалификацией и инструментом.
Не будем говорить о влиянии на качество выполнения вашей работы зубной боли. Профессионал должен уметь обеспечивать приемлемое качество и в таких условиях.
![]()
Давайте поговорим об инструменте, как если бы мы все вдруг все стали профессионалами.
Шуруп, забитый молотком, держится лучше, чем гвоздь, завинченный отверткой.
Анекдот
Итак, при автоматизации необходимо отделить собственно процесс автоматизации от разработки некоего инструмента, позволяющего производить настройку АС на конкретное предприятие.
В этом случае программная система выступает в роли инструмента, с помощью которого производится создание системы. И, соответственно, группой разработчиков такой системы служит команда внедренцев, которая производит «адаптацию» системы под специфику прикладной задачи.
Точно также как невозможно в столярном деле выполнять все работы с помощью одного инструмента, должен существовать набор инструментов, ориентированных на решение конкретного класса или совокупности классов задач.
Если плохой работник ненавидит свои инструменты, хороший работник ненавидит плохие инструменты. Результаты труда рабочего в значительной мере определяются его инструментами.
Джеральд Вейнберг
Попробуем определить требования, которым должны удовлетворять такие инструменты.
Инструмент, о котором мы говорим, безусловно, должен быть удобным, гибким и мощным. Но объявить такие требования – это все равно, что ничего не сказать.
Попробуем сформулировать набор критериев, которым должен удовлетворять инструмент для создания программных систем.
Итак, 10 критериев для инструмента (Почему 10? А потому что у меня 10 пальцев, а у вас?):
- Полнота – инструмент должен позволять выполнять настройку функций, которые должны быть в АС.
- Простота – простые вещи должны выполняться простым способом.
- Постоянство – при модернизации инструмента он должен поддерживать синтаксис и семантику правил, которые выполнены до модернизации.
- Гибкость – инструмент должен позволять описывать алгоритмы как можно ближе к алгоритмам, с которыми работает пользователь.
- Нечувствительность – небольшие изменения в правилах должны давать небольшие изменения в логике выполнения прикладной задачи.
- Расширяемость – инструмент должен поддерживать механизмы расширения или модернизации для обеспечения возможности внесения новой функциональности.
- Минимум исключений из правил – структура операторов и правил в инструменте должна быть строго однородной; не должно позволяться выполнение одних операторов различных алгоритмов для различных исходных данных – это приводит к путанице.
- Наличие средств диагностики ошибок – должны быть реализованы средства обеспечивающие обнаружение ошибок в настройке и наглядное предоставление сообщений об ошибках пользователю.
- Унификация – операторы, выполняющие схожие функции с разными данными должны быть схожи.
- Поддержка библиотеки готовых решений – возможность выделения или внесения готовых решений.