4

私の組織は、ここ 1、2 年で、製品指向のビジネス モデルではなく、契約指向のビジネス モデルにゆっくりと転用し始めました。この 1 年間、私は火消しと注文の履行を支援する新しい請負業務にシフトしました。1 年全体としては利益を上げていましたが (したがって、少なくとも 1 つの指標では成功していましたが、6 月頃に 2 つのプロジェクトがあり、2018 年 6 月頃に 1 年間の数値を大きく下げました。

私はクリスマス休暇の前にマネージャーと話していましたが、彼は「事後分析」という言葉が好きではないと言いました (私はこの言葉の何が問題なのかわかりませんが、ビジネス関係者やマネージャーは知っていますか?) 、彼は1月中旬に会議を開き、契約グループ全体がその年を振り返り、何がうまくいき、何がうまくいかなかったか、そして収益性を改善するために私たちが実行できる取り組みを理解しようとすることを望んでいました.

さまざまな理由から (要望があれば詳しく説明します)、私たちのチーム、そして組織全体が恩恵を受けることの 1 つは、なんらかの組織的なコード共有であると考えています。同じことが別の人によって何度も行われ、最終的には別の方法で行われます (そして壊れます)。少なくとも、人々が特定のタスクを実行するコードを取得し、そのコードを自分のプロジェクトに含める (または、現実的にはコピー/貼り付けする) ことができるリポジトリを確立したいと考えています。

少なくとも 10 人から 12 人のフルタイムの開発者のチームと、専門的な仕事のために契約グループに一時的に出向している 5 人から 50 人の (非常に) パートタイムの開発者のチームに対して、実行可能な共通ソース リポジトリとして何を提案すればよいでしょうか?

答えには、合理的な答えを得るために何らかの文化的情報が必要だったので、このトピックに関する私の考えとともに、ここでそれを提供します。

  1. 開発者は、このリポジトリの使用を強制されません。参入障壁は、参加を促すためにできるだけ低くする必要があります。そうしないと、無視されます。 残念ながら、これは、追加のソフトウェア クライアントをインストールして実行する必要があるものはすべて失敗する可能性が高いことを意味します。ClickOnce の展開は可能な限り近いものですが、それは非常に不確かです。
  2. 私たちはリスクを嫌う Microsoft ショップです。 オープンソース ソリューションを販売できるかもしれませんが、疑いの目で見られるでしょう。すべての開発者は VSS を使用しており、コーポレート ディレクターは VSTS は今後実行できないと宣言しています。セットアップがそれほど難しくなく、ライセンスが自由であれば、VSTS サーバーをラボに忍び込ませてみることもできます。
  3. 私の仲間の開発者の中には、高品質で信頼性の高いソフトウェアを書くことに関心がある人もいれば、気にしない人もいます。 私は、気にする人によって書かれた共有コードを、気にしない人から保護したいと考えています。一般的な構成管理の慣行 (作業中にコードをチェックアウトするなど) は、契約チームの同僚の少なくとも 5 分の 1 によって完全に無視されています。
  4. 私たちは、プロセスに従うよりもプロセスを書く方が得意です。 これをマネージャーに売り込むには、なんらかのプロセスを書面で作成する必要があります。私のマネージャーだけがそれを読むことができるので、それは軽量で柔軟性があり、リモートで関連するツールによって強制される必要があると思います.
  5. ベスト プラクティスを想定しないでください。 一般的なコードで静的分析ツール (FxCop、StyleCop) の使用を強制するために、必須のコード レビューなどを含めたいと考えています。ただし、これはハードルを上げます。現在、そのようなプラクティスは一貫した方法で実行されていないからです。

リクエストされた追加情報を提供させていただきます。:)

編集:(質問への回答)

おそらく、契約という言葉は適切ではありません。私たちは独自のコード資産を完全に所有しています。紙の上でのビジネス モデルの重要な部分 (まだ実際にはそうではありませんが) は、私たちが書いたコード/プロジェクトを所有し、それらを他の顧客に再販できることです。私たちのプロジェクトは通常、会社の多くの既存のソフトウェア製品の 1 つに特別な機能を追加するという形をとっています。

4

6 に答える 6

4

その音から、「事後分析」中にいくつかの解決策を提示する機会があります。あなたのアイデアをまとめたプレゼンテーションを作成し、この会議で発表します。その前に、いくつかのソリューションを設定し、プレゼンテーション中にそれをデモンストレーションすることをお勧めします. やるべきこと -

  1. コンポーネント ベースのプログラミングを普及させます (良い読み物はProgramming .NET Components - Jubal Lowyです)。コーディングの DRY (Don't Repeat Yourself) 原則を支持します。

  2. すべての再利用可能なコード ライブラリに対して、リポジトリ内に中央の共通の場所を設定します。これには、再利用可能なコード ライブラリの参照実装が含まれている必要があります。

  3. コード ライブラリが既に組み込まれている一般的なシナリオのプロジェクト テンプレートを提供することで、人々がコード ライブラリを簡単に使用できるようにします。これには VS.NET プロジェクト テンプレート機能を利用できます。次のリンクVSX Project System (VS.Net 2008)プロジェクト テンプレートの作成に関するコード プロジェクトの記事を参照してください。

  4. MSBuild (VS2005 以降にバンドルされている) などのビルド自動化ツールを使用して、特定のプロジェクトに必要なコンポーネントだけをコピーします。IDE でビルド セットアップのこの部分を作成します (VS.NET 2005 以降には、MSBuild を使用してプリコンパイルおよびポストコンパイル タスクをセットアップするための気の利いた方法があります)。

  5. オープン ソース ソリューションには抵抗があることは承知していますが、 CruiseControl.NETのような継続的な自動化システムをセットアップして使用することをお勧めします。そうすれば、それを活用して、中央リポジトリからプロジェクトを定期的にコンパイルおよびテストできます。使用可能なコード ライブラリが維持されます。このようにして、コード ライブラリへの変更をすばやくチェックして、何も壊れていないことを確認できます。また、さまざまなプロジェクトでバージョンの問題を引き起こすのにも役立ちます。

これをマシンにセットアップし、ポストモーテム中に改善するための手順の一部として示すことができれば、簡単にスケールアップできる既に機能しているものを示しているため、より良い購入が得られるはずです.

これがあなたの伝道に役立ち、幸運を祈ります:-)

私は、最近Chuck Norris Frameworksと呼ばれるこの一連のフレームワークに出会いました。これらは、NuGet のhttp://nuget.org/packages/chucknorrisで入手できます。ASP.NET プロジェクト用の素敵なテンプレートがいくつかあるので、ぜひチェックしてみてください。Nugetもぜひチェックしてください。

于 2008-12-26T06:21:57.067 に答える
1

トピックごとに整理し、ライブラリへのチェックイン/受け入れのために単体テスト (機能レベル) を要求します。ウィキを追加して、何を/なぜを説明し、検索する

于 2008-12-25T06:54:58.483 に答える
0

私の店にも「共有コード」があるので、もう一つのポイントです。

これはパッケージングの問題であることがわかりました。
作成しているコードや使用しているツールが何であれ、ソースを「配信コンポーネント」にパッケージ化できる一般的なビルドツールが必要であり、実際に実行するためにすべてが使用されます。コードだけでなく、ドキュメント(圧縮)、およびソース(圧縮)。

このような「配信パッケージユニット」を使用する主な目的は、これらのユニットのダウンロードを容易にするために、展開するファイルをできるだけ少なくすることです。

ビルドプロセスは、Mavenまたはその他の必要な(ant / nant)ツールで非常にうまく管理できます。

一部の監査チームがすべてのプロジェクトを調査したい場合は、ソースファイルを解凍して作業を行うことを除いて、本番マシンにデプロイするのと同じパッケージをポストにデプロイします。

ソースファイルには、コンパイルに必要なファイル(Eclipseファイルなど)も含まれているため、開発環境でそれらのプロジェクトを再コンパイルすることもできます。


そのように:

  1. 開発者はこのリポジトリを使用することを強制されません。参加を促すために、参入障壁をできるだけ低くする必要があります。そうしないと、無視されます。これは、必要なものがすべて含まれた「配信モジュール」を取得するために実行するスクリプトにすぎません(Mavenリポジトリも使用できます)。 )。

  2. 私たちはリスクを嫌うマイクロソフトショップです:あなたはあなたが望むどんなリポジトリも使うことができます

  3. 私の仲間の開発者の中には、高品質で信頼性の高いソフトウェアの作成に関心を持っている人もいれば、そうでない人もいます。これは、これらのパッケージモジュールで記述されたコードの品質とは関係ありません。

  4. 私たちはプロセスに従うよりもプロセスを書くのが得意です:これに関係する唯一のプロセスはパッケージングプロセスであり、それはかなり自動化することができます

  5. ベストプラクティスを想定しないでください。実行可能ファイルとソースファイルをパッケージ化する前に、静的コード分析を適用する必要はありません。

于 2008-12-25T10:40:17.233 に答える
0

まず、コード編成については、http://msdn.microsoft.com/en-us/library/ms229042.aspxでMicrosoft Framework設計ガイドラインを確認してから、作成する新しいフレームワークの中央ロケーションソース管理を作成してください。いくつかのデフォルトの名前空間、よりクリーンな分離のためのアセンブリを設定し、全員がデイリービルドを取得するようにします。

于 2008-12-25T11:16:45.507 に答える
0

1 つの質問: これはコンサルティング グループだとおっしゃいましたか。どのようなコード資産がありますか? チームのコーディング作業のほとんどは、雇用契約の一環としてクライアントが所有すると思います。これを行う場合は、契約で従業員の仕事に対する権利が認められていることを完全に確認する必要があります。

于 2008-12-25T08:10:55.443 に答える
0

Maven は Java コミュニティでのコードの再利用を解決しました - ぜひチェックしてみてください。

私には、.NET アセンブリの内部使用のために同様のものを考案した .NET 開発者がいます。同等の .NET インターネット コミュニティがないため、このツールは企業ネットワーク内の内部リポジトリにアクセスするだけです。それ以外の場合は、Maven とほぼ同じように機能します。

Maven は実際には .NET アセンブリを直接管理するために使用できますが (Flex の .swf および .swc コード モジュールで使用します)、.NET 関係者は Java ツールの使用を乗り越える必要があり、おそらく Maven プラグインを作成する必要があります。 msbuild を駆動します。

于 2008-12-25T08:21:26.843 に答える