2009-05-23 10 views
2

長時間実行しているプロジェクト(長期実行=数年)の真中にいるとしましょう。期待どおり、新しいリリースがいくつか登場する予定です。 Linq、Entity Framework、WPF、WFなどの新しい機能を備えた新しい.Net Frameworkがあります。新しいVisual Studioまたはお気に入りのコントロールライブラリのVnext、新しいMockフレームワークなど。 これらのテクノロジアップデートを処理するためのガイドラインは何ですか?それを即座に採用するのか、それともプロジェクトの終わりまで無視しますか?あなたは、さまざまなもの(ツール、フレームワーク、サポートするもの)に異なるガイドラインを持っていますか?長時間実行されているプロジェクトでは、どのようにテクノロジアップデートを処理しますか?

答えて

4

私の経験上、これらの決定は常にケースバイケースで行われます。

  1. 新技術の成熟度はいくつですか?組織は最先端の新技術を開発する最前線にいるのが好きですか、または実証済みのツールと方法論を使用することを好むのですか?

  2. どのようなスキルセットがありますか?彼らは新しい技術の使用と一貫しているのですか、あるいはより多くの訓練が必要ですか?生産性の向上はスピードアップに要する時間を上回るでしょうか?

  3. 既存のテクノロジーにはどのような投資がありますか?新技術に移行するためのコストはいくらですか?どのくらいのリワークとコードの書き換えが含まれていますか?

  4. 要件は何ですか。既存の技術によってサポートされているか、要件を満たすために必要な新しいツールですか?

  5. パフォーマンスの期待値は何ですか?新しいテクノロジは、古いテクノロジでは実現できないパフォーマンスの向上をもたらしますか?

  6. 技術文化はどうですか?組織のベンダー固有のもの(例:Microsoftのショップ)ですか?オープンソースコードを使用できますか?

  7. プロジェクトの対象は何ですか?それはフレームワークやツールなどの技術をサポートすることから利益を得る大きなプロジェクトですか、それともこれらのことによって過度に重くなり複雑になる小さなプロジェクトですか?

  8. 新しいテクノロジはどのようにサポートされていますか?ベンダーは良い文書を持っていますか?あなたに問題があると話すことができる人はいますか?または、サポート契約なしで問題を解決する方法を知っている人がいる組織ですか?

  9. テクノロジは使いやすいですか?それは理にかなっているようですか?清潔でエレガントですか?他の人はそれを気に入っているようですか?他の人にも問題がありますか?

  10. このテクノロジーは今週の最新の味ですか?それは戦場で実績を生み出すことが証明されていますか、それとも単なる宗教ですか?

  11. 新しいテクノロジを習得してキンクを解消するのにどれくらいの時間を要しますか?メリットはコストを上回っていますか?非常に簡単な例として

プロジェクトはORMを是認するのに十分複雑だったので、私は、私の最も最近のプロジェクトのためのSQLにリンクを選択し、L2Sはよく機能し、軽量であり、我々はマイクロソフトショップであり、それEntityフレームワークがプライムタイムのために準備が整っていないという私の感覚です(Microsoftが将来のためのフレームワークになると言いますが)。私は別の要因がピッチ言う

+1

+1良い広範な答え。 – ralphtheninja

0

私はプロジェクトがそれほど長くないことを示唆しています。数ヶ月ごとに繰り返しアプリケーションを開発してください。そうすれば、新しい技術が出てくるので、アプリケーション全体を再開発するかどうかを決定しなければならず、必要な変更を加えて更新を実装することができます。あなたが言うように、物事が変わるだけでアプリケーション全体を開発しようとするとうまくいきません。

+0

私は、「長期間にわたるプロジェクト」は「製品」を意味すると理解していました。例えば、製品は10年間にわたって(多くのリリースで)進化するかもしれません。 – ChrisW

3

あなたが始めたことに固執する。

大きくて長時間実行されるプロジェクトには、巨大で高度に複雑なコードベースが付いてくることがよくあります。ライブラリの新しいバージョンへの変更やアップグレードは、非常に微妙で予期しない方法でバグを追加する可能性があります。

また、大規模なプロジェクトの場合、使用されるツールとライブラリは、設計段階でテストされ、評価されている必要があります。ショーストッパーやセキュリティ上の問題が見つからない限り、アップグレードしないことをお勧めします。

常に覚えておいてください:ストリームの途中で馬を変更しないでください。 :-)

1

、like-

  1. は昨年4月、MicrosoftはSQL Server 2000のメインストリームサポートを引退したソフトウェアは、例えば、人生の終わりに近づいていると言う、そしてあなたの製品は、それを使用していますあなたの次のリリースでSQL Serverの次のバージョンに行くのが賢明です。
  2. 最新のソフトウェアリリースの新機能がどれだけ貴重なものになるかは、もう一つの要因です。 .NET Frameworkの新しいリリースでは、製品に価値をもたらさないものがあり、アップグレードするための強力なケースはできません。
  3. 予算も重要な要素です。ソフトウェア保証のようなものにまだ参加していない限り、次のリリースに進むためにライセンスをアップグレードする必要があると思います。
  4. チームへのトレーニングも要因です。最新のリリースが製品に追加される場合は、チームを鍛える必要があります。

まあ、他の情報もあります。これらは私の頭の上から離れたものでした。私はそれが助けて欲しい

歓声

1

あなたは、フレームワーク、具体的な例の話をしている場合は、私はあなたを与えるだろうアドバイスの最大の作品は、システムおよびアプリケーション別のを維持しています。これがModel-View-Controllerなどのパターンを愛する理由です。コードをモジュール化して、アプリケーション全体を中断することなくセクションをアップグレードできることを意味します。

フレームワークにGitリポジトリまたはSVNリポジトリがある場合、リポジトリから通常の 'system'ディレクトリをチェックアウトすると、時には最新のビルドと最高のビルドに対応するために 'svn update'を呼び出すことができます。

0

別のポスターが言ったように、確かにケースバイケースのことです。あなたがアップグレードできるものと、システムの新しいバージョンをテストすることがどれほど難しいか簡単かによっていつ決定されますか。アプリケーションのための包括的な自動テストスイートを持つことは、これを多く役立ちます。

一般的に、ライブラリの最新の安定版などをできるだけ頻繁に更新しようとします。メンテナンスが容易になるためです。更新しない場合は、使用しているライブラリのバージョンのバグにパッチを当てたり、作業しているかもしれません。あまり頻繁に更新しないと、より多くの変更が加えられ、システムに最後に触れてからの経過時間が長くなっているため、各更新が多く機能します。

関連する問題