31 Август 2006

Инструмент

posted in Инженерия ПО |

Качество выполнения работы определяется, прежде всего, двумя факторами: квалификацией и инструментом.

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

Давайте поговорим об инструменте, как если бы мы все вдруг все стали профессионалами. 🙂

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

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

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

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

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

Попробуем определить требования, которым должны удовлетворять такие инструменты.

Инструмент, о котором мы говорим, безусловно, должен быть удобным, гибким и мощным. Но объявить такие требования – это все равно, что ничего не сказать.

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

Итак, 10 критериев для инструмента (Почему 10? А потому что у меня 10 пальцев, а у вас?):

  1. Полнота – инструмент должен позволять выполнять настройку функций, которые должны быть в АС.
  2. Простота – простые вещи должны выполняться простым способом.
  3. Постоянство – при модернизации инструмента он должен поддерживать синтаксис и семантику правил, которые выполнены до модернизации.
  4. Гибкость – инструмент должен позволять описывать алгоритмы как можно ближе к алгоритмам, с которыми работает пользователь.
  5. Нечувствительность – небольшие изменения в правилах должны давать небольшие изменения в логике выполнения прикладной задачи.
  6. Расширяемость – инструмент должен поддерживать механизмы расширения или модернизации для обеспечения возможности внесения новой функциональности.
  7. Минимум исключений из правил – структура операторов и правил в инструменте должна быть строго однородной; не должно позволяться выполнение одних операторов различных алгоритмов для различных исходных данных – это приводит к путанице.
  8. Наличие средств диагностики ошибок – должны быть реализованы средства обеспечивающие обнаружение ошибок в настройке и наглядное предоставление сообщений об ошибках пользователю.
  9. Унификация – операторы, выполняющие схожие функции с разными данными должны быть схожи.
  10. Поддержка библиотеки готовых решений – возможность выделения или внесения готовых решений.

Обсуждение закрыто.