非プログラム的なソフトウェア開発は実現可能か? [closed] 質問する

非プログラム的なソフトウェア開発は実現可能か? [closed] 質問する

私は現在、非常に珍しい設計上の問題に直面しており、私よりも賢明な開発者が何らかの洞察を提供してくれることを期待しています。

背景

あまり詳しくは言えませんが、私は非営利団体に雇われ、彼らのレガシーでありながら非常に価値のある (社会的価値の点で) ソフトウェアの再開発を支援しています。その開発チームは、私がソフトウェア開発者として経験したどのチームとも異なり、少数の開発者と、プログラミングを専門としないドメイン エキスパートの大規模なグループで構成されています。この構成が珍しいのは、ドメイン エキスパート (コンテンツ クリエーターと呼びましょう) が、一部は Prolog エキスパート システム エンジンをベースにしたカスタム ツールを使用して、Web ベースのソフトウェア コンポーネント/フォームを開発している点です。

問題

このシステムは、サーバー側で論理操作を実行し、新しいフォーム/結果を返すために、非常に扱いにくいポストバックモデルを使用しています。これは遅く、失敗しがちです。既存のツールを使用してHTMLフォームを作成するなどの単純なことは、多くの本来あるべきよりも困難になっています。よりインタラクティブでパフォーマンスの高いエクスペリエンスの需要が高まるにつれて、ソフトウェア開発者は、コンテンツ作成者が使用するエキスパート システムやビジュアル ツールを回避し、JavaScript で新しいコンポーネントを手動で作成する必要があることにますます気づき始めています。コンテンツ作成者は、新しいコンポーネントを提供できなくなったため、ますます手詰まりを感じています。

デザインアプローチ: 伝統的/典型的

私は、以前のモデルを完全に放棄し、一般的なソフトウェア開発プロセスを採用することを提唱してきました。前述のように、非プログラム型開発ツールではビジネスのニーズを満たすことができなくなったため、プロジェクトは自然にこの方向に進化しました。

しかし、コンテンツ作成者は非常に貴重な貢献をしており、実装に関与するのではなく、Cucumber などのツールを使用してソフトウェアの期待される動作を正式に指定することに重点を置いてほしいと思います。

デザインアプローチ: 非プログラム的

私が大いに尊敬し、私よりもはるかに知識が豊富だと疑っている同僚は、既存のプロセスで十分であり、より優れたツールを開発する必要があるだけだと考えています。しかし、このアプローチには根本的な欠陥があると感じずにはいられません。過去においても現在においても、このソフトウェア開発モデルが成功した例を私はまだ 1 つも見つけていません。COBOL は、ビジネスマンやドメイン エキスパートがプログラマーを必要とせずにアプリケーションを作成できるようにするという理念で開発されましたが、私の考えでは、これによって生まれたのは新しい種類のプログラマー、つまり COBOL プログラマーです。プログラマーでなくても重要なアプリケーションを作成できる効果的なシステムを開発できるとしたら、プログラマーの需要ははるかに低くなるはずです。このモデルにほぼ適合するフレームワークとして私が知っているのは、SAP の Smart Forms と Microsoft の Dynamix AX だけです。どちらも非常にドメイン固有の ERP システムです。

DSL、テンプレート言語

2 つの概念の妥協案としては、テンプレート言語として何らかの DSL を実装することが考えられます。ただし、1 人の例外を除いて、すべてのコンテンツ作成者がまったく技術に詳しくないため、これが成功するかどうかはわかりません。

また、グラフィカル/ツールボックス スタイルのツールを備えた Visual Studio または Net Beans に基づくカスタム IDE の構築も検討しました。

ご意見は?

非プログラム開発は無駄な作業でしょうか? 常に不満足な結果となり、プログラマーによる実践的な開発が必要になるのでしょうか?

ここまでお読みいただきありがとうございました。また、フィードバックもいただければ幸いです。

ベストアンサー1

あなたは言う:

2 つの概念の妥協案としては、テンプレート言語として何らかの DSL を実装することが考えられます。ただし、1 人の例外を除いて、すべてのコンテンツ作成者がまったく技術に詳しくないため、これが成功するかどうかはわかりません。

正直に言うと、これはまさに私が使うアプローチのように思えます。「非技術系」ユーザーでもなる有用な作業を実行するために、単純な DSL またはテンプレート言語に(十分に)習熟していること。

たとえば、私は科学モデリング ソフトウェアを多く使用しています。多くのモデラーは、エンジニアリングよりも科学に精通しているにもかかわらず、アイデアを使いやすい形で表現するために、1 つ以上のプログラミング言語を学ばざるを得ませんでした。実際、私が知る限り、現在使用されている主要な気象モデルはすべて Fortran で記述されているため、気象学の学位を取得するには Fortran が必須科目となっています。

その結果、"科学的プログラミング" のコミュニティが生まれ、そのほとんどが、比較的正式なソフトウェア エンジニアリングのトレーニングや専門知識、さらには関心さえもほとんどないドメイン エキスパートで構成されています。これらの人々は、Matlab、R、さらには Visual Basic (Excel や ESRI ArcMap などのアプリケーションをスクリプト化するために使用できるため) などの言語やプラットフォームに慣れています。最近、この分野でも Python が人気を集めていますが、これは主に、比較的簡単に習得できるためだと思います。

私が言いたいのは、この分野とあなたの例の間に強い類似点が見られるということです。あなたのドメイン エキスパートが問題について厳密に考えることができる場合 (そうではないかもしれませんが、あなたの質問は十分にオープンエンドなので、そうである可能性があります)、適切なドメイン固有の言語でアイデアを表現する能力が間違いなくあります。

まず、コンテンツ作成者と、彼らが自分の決定や選択をどのように表現したいかについていくつかのアイデアを話し合うことから始めます。私の推測では、彼らは自分が望むものを説明するために「コード」(コードと呼ぶ必要はなくても)を喜んで書くでしょう。彼らに「デバッガー」(「コード」の変更の結果を対話的に調べるためのツール)と、優れた「IDE」サポート アプリケーションを提供すれば、非常に実用的なソリューションが得られると思います。

おすすめ記事