非IT管理者は、重要なレガシーソフトウェアの長期的なメンテナンスと開発をどのように保護する必要がありますか?


13

私たちは、非常に便利で堅牢なソフトウェアのコレクションを備えた、小規模で非常に専門的な福利厚生管理会社です。一部はCOBOLで書かれていますが、ほとんどはBASICです。2人の専任コンサルタントがこのシステムを30年以上にわたって適切に維持および改善してきました。言うまでもなく、彼らはすぐに引退します。(そのうちの1人は数年引退することを切望していましたが、過失に忠実であり、夫がゴルフを優先するべきだと主張しているにもかかわらず、固執しています。)

私たちは、使用している種類のソフトウェアを提供している国内の3社のみのうちの1社によって開発されたシステムへの転換の道を歩み始めました。この会社は理論的には変換プロセスを完了することができますが、タイムリーにそれを行うためのリソースがなく、実行する必要のある種類のサービスを提供できないと信じるようになりました。私たちのビジネス。(自分の優先順位を設定でき、適切と思われるリソースを割り当てる権限を持っていることほど素晴らしいことはありません。)

ハードウェアは問題ではありません。最新のサーバーで非常に効果的にエミュレートできます。COBOLとBASICが最新の言語である場合、現在のコンサルタントの代替品が今後見つかる可能性があるというリスクを負うことになります。

このようなレガシープラットフォームに集中し、私たちのようなシステムをサポートするためのプログラミングおよびソフトウェア開発の才能を提供し、適切なプログラミングの才能を見つけるリスクを背部から排除するITサポート会社のビジネスモデルがあるはずです若いプログラマーに生産的でやりがいのあるキャリアを持たせることを納得させる仕事。一部にはBASICのような古くてセクシーではない言語で。

要するに、非IT管理者として、この移行をどのように最適に管理できるでしょうか。


6
痛い!BASICとCOBOL?!?私は老人ホームを試すでしょう。ソフトウェアを「近代化」することを考えましたか?
BЈовић

2
付け加えると、生産的でやりがいのあるキャリアで、一部はBASICのような古くてセクシーではない言語で。- BASIC生産性、やりがいのキャリアは一つの文に沿って行っていない
BЈовић

3
ソフトウェアをレガシシステムから移行する請負業者やコンサルタントがたくさんあります。しかし、cobolとbasicは先史時代の遺産ではありません。奇妙なことに、おそらくヒップスターのハッカーのようにクールであるため、誰かを雇うのは非常に簡単です。
ニムチンプスキー

3
これについては、@BЈовићに同意します。少なくとも将来の証明のために、BASICやCOBOLといった古くからあるものの生命維持を見つけるのではなく、ソフトウェアを近代化することを検討すべきです。今のところ、あなたのためにコーディングできるオールディーズや流行に敏感な子供を見つけるかもしれませんが、年が経ち、パラダイムが変わると、これらの才能は絶滅の危機にspeciesした種になり、システムのゆっくりとした着実な終miseを引き起こします。プログラマーをかろうじて見つけることができるという単なる事実は、変化の時が来たという警告です。
マル

2
@ user105977-私の最善のアドバイスは、現在のシステムを文書化して(まだ文書化されていない場合)、コンサルタントが快適であると感じられるようにすることです。バスに引かれたり退職した場合、誰かが彼らの後に来てプロジェクトを管理できます。プロジェクトのドキュメント(仕様、プロジェクト要件、電気ショック療法)を取得したら、そのような悪い立場にはありません。私はこれらの言語についてのコメントの大部分に異議を唱えますが、依然としてそれらの言語に対する需要があり、これらの言語の知識は多大な価値があります。若い開発者は、これらの言語をすばやく習得できるはずです。
ラムハウンド

回答:


11

「このようなレガシープラットフォームに集中するITサポート企業のビジネスモデルがあるべきだ」と思われるかもしれませんが、個人的には、あなたが直面する課題を「解決」するので、それはあなたの側の希望的観測にすぎないと思います急降下しました。

古い環境で立ち往生することは、前進する方法ではありません。そして、私は、今のところ、あなたが明らかにできないことを喜んで行う会社を見つけることによって、立ち往生しようとする会社の人生を賭けないでしょう。

したがって、あなたが尋ねた実際の質問への答えではなく、移行のリスクを最小限に抑えながら前進する方法についての誠実なアドバイスです。

「正気を失うことなく、ゼロから書き直して生き残る方法」を読んでください

長い移行プロジェクトでエラーが発生しないようにしてください。長い間、実際の結果は得られません。「正気を失うことなく、ゼロから書き直して生き残る方法」を読んでください

そのようなプロジェクトを「古い」方法でやった後、その記事のアドバイスが、同様の問題への取り組み/アプローチにどのように役立ったかを十分に強調することはできません。

自動テストを設定する

まだ準備していない場合(なぜですか?)、現在のプログラマーにアプリケーション用の自動テストハーネスを作成してもらいます。

自動テストスイートは、アプリケーションのすべての機能領域をカバーする必要があります。個々のテストケースの「when_X_then_Y」ルールで現在の作業仕様を文書化するか、文書化します。これは、現在のコードの変更が既存の機能を壊さないようにすると同時に、新しい環境への移行をサポートするのに役立ちます。

COBOLおよびBASICを扱っているため、テストスイートはおそらく統合テストのレベルにある必要があります。入力ファイル/データベースの「固定」セットを処理し、特定のプログラム(COBOL)の出力ファイル/変更されたデータベースの内容を確認し、 /またはアプリケーション。ソフトウェアのBASICパーツでは、コマンドラインパラメーターを追加して、(G)UIの介入なしで特定の機能を実行したり、(G)UIベースの自動テストツールを取得したりすることを意味する場合があります。

計算と他のアルゴリズムを分離する

Cobolでさえ、メインプログラムから呼び出し可能なサブプログラムの概念をサポートしています。すべてのインポート計算と他のアルゴリズムを個別のプログラムまたはモジュールに分離します。目標は、入力を収集して出力を作成するすべてのものから隔離された、うんざりする作業を行うプログラム/モジュール/その他のライブラリを作成することです。

テストハーネスを調整して、古いアプリケーションと単独でテストします。これにより、新しい環境への移行を容易にするために「古い」コードで行っている作業で、エラーが最小限に抑えられます。

「現在の」環境でアプリケーションの新しいセットを開始します

現在のコードを変換しないでください。ある言語を別の言語に変換するということは、古い環境の制約を新しい環境に課すことを意味します。結果はしばしば望ましくない場合があります(結果:ひどい結果になり、維持するのに苦労します)。移行します。その環境のベストプラクティスと考えられる方法で、新しい環境にアプリケーションをセットアップする時間をかけてください。

選択する環境に精通している新しいプログラマを取得してください。重要な計算とアルゴリズムをすべて個別のクラスやパッケージに分離し、それらをインターフェースの背後に隠すことを、初日から優先事項にします。依存関係注入(DIY依存関係注入の最も安価な種類)を使用して、計算を行うためにインスタンス化/使用するクラスを新しいアプリケーションに伝えます。

これはとにかく物事を行うための良い方法であり、あなたのケースでは、ケースごとにそれらの重要な部分を移行することができます。また、新しい環境の呼び出し関数から基本プログラムやcobolプログラムを呼び出す複雑さを隠します。

アプリケーションをセットアップし、おそらくCOBOL / BASICの「ライブラリ」からの計算を使用する単一の最も重要な入力/出力関数をセットアップすることを、さらに進めないでください。

COBOL / BASIC「ライブラリ」を統合する

新しい環境からCOBOL / BASICの「ライブラリ」を呼び出す方法を見つけます。これには、パラメータファイルまたはデータベーステーブルの設定、以前に設定したCOBOL / BASICライブラリをラップするCOBOL / BASICプログラムの実行が含まれます。運がよければ、BASICのバージョンにより、直接呼び出すことができるDLLの作成が許可される場合があります。

COBOL / BASICの「ライブラリ」を呼び出すクラスを新しい環境に実装し、古い環境のテストハーネスにあるのと同じテストを使用して、その環境をテストしますが、新しい環境では単体テストの形式になります。

はい、これはテストを「複製」することを意味しますが、それはあなたがなしでやりたくない安全策です。これらの単体テストが後で新しい環境に移行されたときに計算とアルゴリズムの実装をチェックするテストとして機能するためだけの場合。

ただし、繰り返しますが、前の手順で最も重要な1つの計算で使用される計算に単体テストを追加すること以上に進めないでください。

反復で新しいアプリケーションを具体化する

古いアプリケーションのすべての機能について、前の2つの手順を繰り返して、新しいアプリケーションを具体化します。計算を確認する単体テストを新しいアプリケーションのテストハーネスに追加し続けます。統合テストスイートを使用して、移行された機能が古いアプリケーションと同じように機能することを確認します。

反復でコアライブラリを移行する

最後に、COBOL / BASIC「ライブラリ」の計算とアルゴリズムを移行し、新しい環境に再実装します。繰り返しますが、あなたの正気を保つ方法として(ユニット)テストを繰り返し使用してこれを行います。


1
あなたの答えはそれ自体で見ると良いですが、残念なことにそれは本当に質問に焦点を合わせていません。質問者は非ITマネージャーであり、あなたが書いたもののほとんどについてあなたが何を意味するのか全くわからないでしょう。彼は誰かを見つけるためのアドバイスが必要です。
フィリップ

1
@フィリップ:私は彼の実際の質問には答えていないと言っていたにもかかわらず、よく見分けられました。OPはGoogleの使用方法を知っており、OPの答えには十分な検索用語があり、現在のプログラマーに調査を依頼することができます。OPに対処する必要があると思うので、OPに対処する独自の回答を自由に追加してください。あなたがやった場合ヘック、でも... upvoteかもしれない
マージャンVenema氏

彼は、移行プロセスのためにビジネスITコンサルタントを必要とします。コンサルタントは、そのようなプロセスを以前に支援したことがあります。コンサルタントは仕事をするべきではありませんが、代わりに仕事をしている人を見つけて監督し、プログラムがビジネスに必要なことをすることを確認するべきです。はい、それは高価です。常に独自のソフトウェアを持つことは重要です。
MSalters

@MarjanVenema(この質問を投稿したときに私が何を期待していたのか正確にはわかりませんが、私が期待していなかったことの1つは、ほとんどすべてのコメントが思慮深く有用であるということでした-多くの人が考えていることです) Milsteinの投稿、および彼が応答していたSpolskyの投稿であり、Milsteinでさえコードを書き換えるという考えは好きではありません。これまでの経験に基づいて、データ移行の危険性と作業コードの価値に関するSpolskyのコメントは真実です。私は希望的観測に屈していることを間違いなく心配しているが、ラムハウンドの権利を本当に考えたい。
user105977

1
@ user105977:わかりました。はい、書き直しは危険ですが、常に回避可能であるとは限りません。古いシステムを維持するために、今でもすぐには利用できないスキルセットに依存することは、書き換えのリスクよりも大きいビジネスリスクであり、利用可能な開発者のプールが維持されるにつれて時間とともに増加するものです減少しています。しかし、私はあなたの立場ではなく、彼らの相対的なリスクを判断することはできません。
マルジャンヴェネマ

2

このアプリケーションはあなたのビジネスの「中核」のようです。システムまたはプロセスがあなたのビジネスである場合、それはあなた自身のカスタムソリューションを持っている場合です。

あなたはこれをほのめかしました。残念ながら、テクノロジーの更新から長い時間が経過していることを考えると、これは非常に困難な作業です。

2つのルートのいずれかをお勧めします。

  1. 上記のやや技術的な回答にあるように、開発者/プロジェクトマネージャー/ QE /オペレーションのITグループにスタッフを配置し、システムを段階的に構築します。ただし、これは非常に高価です。
  2. 市販のプロバイダーではなく、資格のあるカスタム開発者コンサルタントを探してください。このグループは、すべてのリソースを処理して新しいシステムを構築します。その後、オプション1よりも少ないスタッフで社内に持ち込み、続行できます。このオプションにはさまざまなリスクがありますが、非技術者にとって適切なプロバイダーを選択することは非常に困難です。また、コスト超過などのリスクが非常に高くなる可能性があります。このルートを軽減するには、既存のスタッフを使用して、入札に関する非常に詳細な要件セット(ユーザーの観点から)を作成します。次に、固定価格の入札も依頼します。

幸運なことに、あなたは約20年間の克服すべき遺産を持っています。安くもなく、簡単でも、きれいでもありません。


1
参考までに、ソフトウェアの世界で20年間は、2〜3人の世代に相当します。とても長い時間です。技術的なポイント・オブ・ビューから、BASICとCOBOLは...博物館に置かれるために、古い十分にある
ラドゥMurzea

私は実際に20年間プログラミングを行っており、COBOLは私の経験よりもかなり前のものです。
ビルリーパー

-2

レガシーソフトウェアを保守する会社を探したり、レガシーソフトウェアを書き直したりする会社を探すのではなく、継続的な福利管理システムサービスを提供する会社を探してください。ソフトウェアを書き換えるかどうか、設定するスケジュール、使用する言語またはツールを決定する問題を外部委託します。

はい、このアプローチの明らかなコストは、新しいプログラマーを雇うことの明白なコストを超える可能性がありますが、あなた自身の承認により、あなたは非IT管理者であり、最終的にあなたの会社のコストを上回る決定を下すシナリオを予測することは簡単ですアウトソーシングの明らかなコスト。


1
2番目の段落では、あなたが提案したことをすでに実行したと述べています。給付管理ソフトウェアを提供する3つの会社すべてを特定しました。いずれも資格がありません。
MSalters

私は彼らがソフトウェアを提供する会社を見つけることを提案しませんでした、むしろ継続的な給付管理システムサービスです。
ハイパフォーマンスマーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.