В настоящее время я столкнулся с очень необычной проблемой дизайна и надеюсь, что разработчик, более умный, чем я, мог бы предложить некоторое понимание.
Фон
Не будучи слишком конкретным, меня привлекает некоммерческая организация для оказания помощи в перестройке своего наследия, но очень ценного (с точки зрения социальной ценности) программного обеспечения. Команда разработчиков отличается от той, с которой я столкнулся в свое время как разработчик программного обеспечения, и состоит из небольшого числа разработчиков и большой группы экспертов, не программирующих домен. Что необычно для организации, так это то, что эксперты в области (позволяют называть их создателями контента), используют настраиваемые инструменты, некоторые из которых основаны на прологе экспертной системы, для разработки веб-компонентов/форм программного обеспечения.
Проблема
Система использует очень неудобную модель обратной передачи для выполнения логических операций на стороне сервера и возвращает новые формы/результаты. Он медленный и склонный к провалу. Простые вещи, такие как создание html-форм с использованием существующего инструментария, намного сложнее, чем должно быть. По мере роста спроса на более интерактивный и опытный опыт разработчики программного обеспечения все чаще находят, что им приходится обойти экспертную систему/визуальное оснащение, используемое создателями контента, и писать новые компоненты вручную в javascript. Создатели контента все больше ощущают, что их руки связаны, поскольку теперь они не могут вносить новые компоненты.
Конструктивный подход: традиционный/типичный
Я выступал за полный отказ от предыдущей модели и принятие типичного процесса разработки программного обеспечения. Как упоминалось ранее, проект, естественно, эволюционировал к этому, поскольку не-программная инструментария разработки стала неспособной удовлетворить потребности бизнеса.
У создателей контента есть очень ценный вклад, но я хотел бы, чтобы они сосредоточились на формальном определении ожидаемого поведения программного обеспечения с помощью таких инструментов, как Cucumber, вместо того, чтобы участвовать в реализации.
Конструктивный подход: не-программный
Мой коллега, которого я уважаю много и подозреваю, гораздо более осведомлен, чем я, чувствует, что существующий процесс прекрасен, и нам просто нужно создавать лучшие инструменты. Я не могу не чувствовать, однако, что есть что-то принципиально ошибочное с этим подходом. Мне еще предстоит найти один экземпляр - исторический или современный, где эта модель разработки программного обеспечения прошла успешно. COBOL был разработан с философией, позволяющей деловым людям/экспертам домена писать приложения без необходимости программиста, и, на мой взгляд, все это создавало новый тип программиста - программиста COBOL. Если бы можно было разработать эффективные системы, позволяющие не программистам создавать нетривиальные приложения, то спрос на программистов был бы намного ниже? Единственными структурами, которые мне знакомы с этой моделью, примерно соответствуют этой модели: SAP Smart Forms и Microsoft Dynamix AX - оба из которых являются очень специфичными для домена системами ERP.
DSL, языковые языки
Что-то из компромисса между этими двумя концепциями будет заключаться в том, чтобы реализовать какой-то DSL в качестве языка шаблонов. Я даже не уверен, что это будет успешным, поскольку все создатели контента, за одним исключением, полностью нетехничны.
Я также рассмотрел создание пользовательской среды IDE на основе Visual Studio или Net Beans с инструментами стиля графического/инструментального инструмента.
Мысли?
Является ли не-программное развитие безумным? Будет ли это всегда приводить к чему-то неудовлетворительному, требуя от программиста руки от разработки?
Большое спасибо, если вы потратили время, чтобы прочитать это, и я, безусловно, буду благодарен за любую обратную связь.