ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

5
どのくらいのコードを担当する必要がありますか?
同僚と出口インタビューを通じて、私は私の小さな会社で、私が他の仕事にいるときよりも3〜10倍多くのコードに対して「責任がある」と聞いています。私は自分のワークロードを他の分野と比較するために使用できる、ある種のあいまいなメトリックを探しています。 「コードの責任」とは、「コードベースのエリアXを知っているのは私だけ」という意味ではありません(悲しいことに、スタートアップ環境ではよく当てはまります)。むしろ、「code_base_size / number_of_developers」。 コードの行を数えるだけでなく、作業負荷をより正確に測定するために使用できるリソースはありますか?
12 metrics 

2
社内ユーザーグループを成功させるにはどうすればよいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 社内の開発者向けに社内ユーザーグループ/フォーラムを立ち上げたいのですが、どのように始めるべきかわかりません。 多くの技術と経験レベルにまたがる開発者のチームがいくつかあります。これは、私たち全員が一緒になって、テクニック、ベストプラクティス、学んだ教訓、問題点、新しいテクノロジー、または開発者が興味深いと思うものを共有する機会であると思います。 これはまた、新規採用者が統合し、私たちのやり方を学び、彼らがもたらす専門知識の一部を共有するための素晴らしい方法です。 これはこのようなことでの最初の試みであり、私はそれを正しくしたいと思います。 私は次のようなものに興味があります: 運転参加 20年の退役軍人と環境に優しい新卒者の両方に興味を持たせる ユーザーグループに有害​​であることが知られている落とし穴を避ける 誰もこれを成功させましたか?もしそうなら、あなたは経験について何を共有できますか?

6
Pythonを独自の言語として一意にする特徴は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 Pythonを独自の言語として一意にする特徴は何ですか?良いものから悪いものまで、有用なものから障害物まで、構文から実際の使用法まで、あらゆる種類の特性を探しています。 私はここでは初心者なので、直感的なことを説明する必要があるかもしれません。

4
不要な参照や使用があるとどうなりますか?
私は少しきちんとしたフリークで、using実際に使用されているものだけを保持するために各クラスの参照とsをクリーニングすることでプロジェクトを維持する傾向があります。 (OCDの神経を落ち着かせる以外に)必需品を守ることについて、他にどのような議論ができますか?私は主にシステム参照を考えています、カスタム作業への参照は多くの後方互換性の問題をもたらします。リリースのフットプリントは大きいですか?コンパイル時間は長くなりますか?
12 c# 

3
Entity Frameworkとレイヤー分離
Entity Frameworkを少し使用しようとしていますが、レイヤーの分離に関する質問がありました。 私は通常UI-> BLL-> DALアプローチを使用しますが、ここでEFを使用する方法を知りたいです。 私のDALは通常、次のようなものです GetPerson(id) { // some sql return new Person(...) } BLL: GetPerson(id) { Return personDL.GetPerson(id) } UI: Person p = personBL.GetPerson(id) 私の質問は、EFが私のモデルとDALを作成するので、EFを自分のDAL内にラップするのは良い考えですか、それとも時間の無駄ですか? EFをラップする必要がない場合でも、Model.esmxを独自のクラスライブラリ内に配置しますか、それともBLL内に配置してそこで作業するだけでいいでしょうか? EFを自分のDAL内にラップする理由は実際にはわかりませんが、他の人が何をしているのか知りたいです。 したがって、上記の代わりに、DALを除外して、次のようにします。 BLL: GetPerson(id) { using (TestEntities context = new TestEntities()) { var result = from p in context.Persons.Where(p => p.Id = …

5
「問題ドメイン」とは
学校プロジェクトのプログラムを文書化する必要があり、「問題ドメイン」というセクションがありますが、このセクションで何を議論するのかわかりません。 質問は次のとおりです。問題の領域で何を議論すべきか。

3
Android、OpenGL、GLSurfaceViewの拡張?
この質問は、部分的に技術的、部分的にメタ、部分的に主観的で、非常に具体的です。 私はインディーズのゲーム開発者であり、Androidに取り組んでいます。過去6か月間、苦労し、ついにAndroid用の3Dゲームアプリを作成することに成功しました。だから私はSOに飛びついて、アンドロイドとopenGL-ESで苦労している他の人を助けると思った ただし、質問の大部分は拡張に関するものGLSurfaceViewです。拡張せずにアプリ全体を作成しましたGLSurfaceView(そして正常に動作します)。私がGLSurfaceView出くわした質問の大部分に及ぶ理由はまったくありません。 さらに悪いことに、アンドロイドのドキュメントはあなたがすべきであることを暗示していますが、長所/短所がなぜあるのかGLSurfaceView.Renderer、私がやったようにあなた自身を実装してすべてを実行していないのかについての詳細な説明は提供していません それでも、問題が純粋に拡張に関係している膨大な質問は、GLSurfaceView実際に私がそれを行っている方法と他の方法でそれを行うための本当に良い理由があるのか​​どうか疑問に思っていますする)。 だから、私が見逃しているものがありますか?その間に質問に答えるのをやめるべきですか? Android OpenGLドキュメント
12 android  opengl 

4
C#のハッシュテーブルと辞書の実用的なサイズ制限
C#4ディクショナリまたはHashtableに含めることができるアイテムの数と、これらの構造に合理的に含めることができる合計バイト数の実際的な制限は何ですか。多数のオブジェクトを使用して、これらの構造がいつ問題を起こし始めるかを知りたいと思います。 コンテキストでは、大量のメモリを備えた64ビットシステムを使用します。また、何らかのフォームまたは「キー」を使用してオブジェクトを見つける必要があります。パフォーマンスの要求を考えると、これらのオブジェクトはメモリに常駐する必要があり、多くは存続します。 サードパーティまたはオープンソースのライブラリを使用しないようにする必要がありますが、他のアプローチ/パターンを自由に提案してください。仕様上の理由から、ネイティブC#(またはC ++ \ CLI)を使用してこれをビルドできる必要があります。

5
プログラミング言語の構文は実装に依存していますか?
しかし、私の質問はまったく無関係かもしれませんが、ほとんどのプログラミング言語と公式の実装との間のパターンを感じました。 PythonやLuaなどの解釈された(バイト解釈?)言語は、通常、非常に寛容で簡単な構文を持ち、一般に型がなく、開発者がソースコードに変数の型を明示的に記述する必要はありません。 C、C ++、Pascalなどのコンパイルされた言語は通常、厳密な構文を持ち、一般に型を持ち、ほとんどの場合より多くのコード/開発時間を必要とします Java / C#のように公式実装がJITコンパイルされている言語は、通常、上記の2つの間の優れた機能を備えた独自の妥協案です。 DやVala(およびJavaのGNU GJC実装)のような最新のコンパイル済みプログラミング言語の一部は、おそらくこの規則の例外であり、JavaやC#などのJITコンパイル言語の構文と機能に似ています。 私の最初の質問は、これは本当に関連性がありますか?または、これはほとんどのインタープリター言語が簡単な構文を持っていることと単なる偶然の一致であり、JITコンパイルされた言語は中程度の構文と機能を持っています 第二に、これが偶然ではない場合、なぜそうなのですか?たとえば、たとえば、JITコンパイルしている場合にのみ、プログラミング言語で実装できる機能はありますか?

3
コマンド/クエリの分離は、オブジェクトを作成してそのIDを返すメソッドに適用されますか?
ビジネスプロセスを呼び出すサービスがあるとします。このプロセスは、データレイヤーを呼び出して、データベースにタイプAのオブジェクトを作成します。 その後、データレイヤーの別のクラスを再度呼び出して、データベースにタイプBのインスタンスを作成する必要があります。外部キーのAに関する情報を渡す必要があります。 最初のメソッドでは、オブジェクトを作成(状態の変更)し、1つのメソッドでそのID(クエリ)を返します。 2番目のメソッドには、保存用の1つ(createA)とクエリ用の2つ(getId)の2つのメソッドがあります。 public void FirstMethod(Info info) { var id = firstRepository.createA(info); secondRepository.createB(id); } public void SecondMethod(Info info) { firstRepository.createA(info); var key = firstRepository.getID(info); secondRepository.createB(key); } 私の理解から、2番目の方法は、コマンドクエリの分離に完全に従います。しかし、作成したばかりのオブジェクトを取得するためにデータベースを照会するのは無駄で直観に反すると思います。 このようなシナリオでCQSをどのように調整しますか? CQSに続くのは2番目の方法だけですか?その場合は、この場合に使用するのが望ましいですか?

2
大規模プロジェクト向けのPython
大規模で強力なPythonプロジェクトを設計する方法に関するリソースはありますか?私は野心的な個人プロジェクトから始めたいと思いますが、プロジェクトを成功させるためにそれをどのように設計し、どのような慣行を導入するべきか、私は本当に知りません。 大規模なPythonプロジェクトを機能させる方法について議論しているリソースはありますか?
12 python 

2
ダイクストラのアルゴリズムは、この信号ルーティング問題の適切な解決策ですか?
私は、統合された視聴覚システム用の信号管理およびルーティングモジュールの開発を進めており、さまざまな信号配信ネットワークにわたって可能な限り柔軟になるように設計しています。モジュールの目的は、多数のスタックマトリックススイッチャー1を経由するルーティングを処理し、必要なフォーマット変換を処理することです。 この時点で検討した最良の解決策は、ネットワークをスイッチャーでサポートされている各信号タイプの個別の頂点を持つグラフにマッピングし、フォーマット変換を処理するビデオプロセッサを表すノードを介して結合することです。 色は信号形式を表します。 ラウンドノードは、スイッチャー、ソース、またはシンクのいずれかです。 スクエアノードは、形式変換を実行するビデオプロセッサです。 そこから、ダイクストラのアルゴリズムの実装を使用して、入力Xから出力Yを取得するために形成する必要があるパスを特定できます。これにより、すべてのスイッチャーおよびプロセッサーの入力/出力構成に関するデータを渡すことができます。モジュールはそれに応じて適応します。 これは適切な解決策ですか、それとも調査する価値がある代替アプローチがありますか? 1別名「クロスバースイッチ」、1対多の接続をサポートするM入力x N出力のビデオルーター。各物理デバイスは複数の信号形式を処理でき、形式変換を実行できる場合とできない場合があります。 編集: PéterTörökが述べたように、グラフは必ずしもツリーである必要はありません。図はアイデアを説明するための簡単な例です。「実世界」に実装すると、エッジの重みで表現することを計画していたさまざまなレベルの定義(DVI> VGA>コンポーネント>コンポジット)を提供する複数のパスが存在する場合があります。 編集2:指向性が示され、2つの信号タイプで構成されるネットワークを示す、もう少し包括的な例です。最初の例は、マトリックスルーティング/入力選択を制御するために必要なデータを提供するため、デバイスの各入力と出力が個別のノードとして定義されるようにわずかに変更されました。

3
継続的インテグレーションとDVCSのパターン
現在SubversionとTeamCityを使用していますが、Mercurial(特にFogBugzユーザーのKiln)の使用に移行します。 明らかにこれにより、開発パターンに変更(できれば改善)がもたらされます(2人全員!)が、私が悩んでいる1つの問題は、継続的な統合/ CIサーバーのメリットを享受できるように物事を構造化する方法です(利益が存在し、今後も存在することは当然のことであり、その議論はこの質問の範囲外です。 SVNを使用すると、限られた数の中央リポジトリにコミットします-事実上プロジェクトごとに1つ(多かれ少なかれ1つのVisual Studioソリューション)なので、ビルドをトリガーし、すべてのファイルがコミットされていないという安心感を得るのが簡単です依存関係などの漂流など。しかし、mercurialを適切に進める場合は、リポジトリインスタンスを増やしたいと思うでしょう。変更点は、一般に決定的な「ライブ」レポジトリに向かって流れると予想されます。私が苦労している問題は、ライブリポジトリが私にとってCIビルドをトリガーするには遅すぎるように見えることです。開発者ごとにプロジェクトごとに1つのCIビルドが多すぎると思われます(そして他の問題を引き起こします)。 私は少し釣りをしていますが、それは、中央のSubversionリポジトリが提供するものの1つ(私はセットアップで!)が、何をいつ構築するかについて非常に明確だからです。 nb Mercurialを継続的インテグレーションで使用するメカニズムについては質問していません。個人的なプロジェクトの御and走、そのパターンと構造、そして頭を動かそうとしている作業プラクティス/ワークフローを持っています。

3
グローバルオブジェクトの一部の組み込みプロパティを削除できるのはなぜですか?
私は最近es5を読んでいますが、グローバルオブジェクトの一部の組み込みプロパティの[[configurable]]属性がtrueに設定されていることがわかります。つまり、これらのプロパティを削除できます。 例えば: Array.prototypeオブジェクトのjoinメソッドには属性があります {[[Writable]]:true, [[Enumerable]]: false, [[Configurable]]: true} したがって、Arrayのjoinメソッドを簡単に削除できます。 delete Array.prototype.join; alert([1,2,3].join); アラートはundefined、私のクロム17、Firefox 9、つまり10、つまりIE6に表示されます。 Chrome 15およびsafari 5.1.1では、[[configurable]]属性がtrueに設定され、削除結果もtrueに設定されていますが、最終結果はまだfunction(){[native code]}です。これはバグのようで、クロムはそれを修正します。 以前は気づいていませんでした。私の意見では、ユーザーのコードの組み込み関数を削除することは危険であり、他のユーザーと作業するときに非常に多くのバグを引き起こします。
12 javascript 

2
初心者、中級、上級のレール開発者はどのタスクを完了する必要がありますか?
私は約1年間RORをプログラミングしており、他の人のためにプロジェクトに取り掛かる準備ができていると思います。問題は、請負業者の求人情報では、さまざまな経験レベル(レールやその他の技術)で実行できる特定のタスクが実際にはわからないため、どこに自分を売り込むかわからないことです。私はジュニアとミドルレベルの間のどこかにいると思いますが、誰が知っていますか?だから私の質問は: ジュニアプログラマがたとえば1時間35ドルで実行できる実際のタスク、中級プログラマが1時間で75ドルで実行できる実際のタスク、上級プログラマができる実際のタスク1時間あたり140ドルですか? 1つまたは2つの例で十分です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.