ソフトウェア工学

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

11
分散型バージョン管理システムのビジネスケース
git / mercurial / bazzrシステムが集中システム(subversion、perforce)よりも優れている理由を検索しましたが、ビジネス上の理由は見つかりませんでした。 DVCSを非技術者に販売しようとした場合、DVCS が利益を上げるためにどのような議論を提供しますか。 私はまもなくマネージャーにgitを売り込みます。subversionリポジトリーの変換には少し時間がかかり、smartgitライセンスの購入にはいくらかの費用がかかります。 編集私はこの質問を集中型と分散型の一般的な議論にしようとしましたが、必然的にgit vs subversionに変わりました。確かに、転覆よりも優れた集中システムがあります。

16
短い識別子は悪いですか?[閉まっている]
短い識別子は悪いですか?識別子の長さとコードの理解はどのように相関しますか?識別子の命名に関しては、他にどのような要因(コードの理解以外)を考慮する必要がありますか? 回答の質を維持するために、このテーマに関する調査が既に行われていることに注意してください! 編集 私が提供した両方のリンクが大きな識別子が有害であることを示しているとき、誰もが長さが関連しているとは思わないか、より大きな識別子を好む傾向があることに興味があります! リンク切れ 以下のリンクはこのテーマに関する研究を指していましたが、今は壊れています。私は論文のコピーを持っていないようで、それが何であったかを思い出しません。他の誰かがそれを理解できるように、ここに残しておきます。 http://evergreen.loyola.edu/chm/www/Papers/SCP2009.pdf

11
なぜあなたが計画したほど多くのことを成し遂げられないのですか?[閉まっている]
私はいつも「一日の終わりまでにこれを簡単にやる」と考えて一日を始め、現実的な目標のように見えるものを設定します。 なぜ私は決してそれを打たないのですか?予期しないバグ、直前の変更などのために、タスクは常に3倍長くかかります。 私だけでしょうか?私は1日で何ができるかをより良く予測しているようには見えません。

11
バグと元の開発に費やす時間はどれくらいですか?[閉まっている]
この質問は少し抽象的ですが、誰かが私を正しい方向に向けてくれることを望んでいます。 私の質問は、元の開発時間に関連するソフトウェアプロジェクトのバグにどれだけの時間を費やすことができるかです。膨大な数の決定要因が存在することを認識していますが、典型的なまたは平均的な内訳を望んでいました。 たとえば、プロジェクトAの完了に40時間かかり、さらに10個のバグを修正する場合、このプロジェクトの比率は4:1になります。 別のプロジェクト(B)が完了するのに10時間かかり、バグでさらに8時間かかる場合、比率は5:4になります。 これは文書化/研究された概念ですか? 更新 すべての有益な答えをありがとう。関係するすべての変数と環境要因のため、この種のメトリックに標準を設定することは不可能であることを理解しています。回答を割り当てる前に、このメトリクスに同意済みの名前があるかどうかを知りたいので、さらに調査することができます。メトリックを自分で生成するために必要な測定値を理解し、最終的にプロジェクトのベースライン標準を思い付くことができるポイントに到達したいと思います。
26 bug  time 


9
主キーは不変である必要がありますか?
StackOverflowの上の最近の問題は、主キーの不変性についての議論を引き起こしました。主キーは不変でなければならないというのは一種のルールだと思っていました。いつか主キーが更新される可能性がある場合は、代理キーを使用する必要があると考えました。ただし、これはSQL標準には含まれておらず、一部のRDBMSの「カスケード更新」機能により、主キーを変更できます。 だから私の質問は次のとおりです。変更される可能性がある主キーを持つことは依然として悪い習慣ですか?可変の主キーを持つことの短所がある場合、それは何ですか?

9
技術的なことを非技術的な人々に説明する[非公開]
私は、技術的なことや技術的な決定について、非常に非技術的なマネージャーに説明しなければならないことがよくあります。プログラミングに情熱を持っていない世界の他の人たちにとって、本質的な物の言えないことを減らす良い方法は何ですか? 質問の例: Javaの代わりにDjangoを使用しているのはなぜですか(どちらも安いことを受け入れませんでした) 専門用語ではない言葉で言い換えることを求められたとき、私の文は「特定のHTMLタグは許可されていません」でした。どうすればそれを馬鹿にすることができますか? 私にとって完全に理にかなっているが、それは非常に基本的であるため、それを説明する方法がわからないその他のもの なぜこれ、なぜそれ、なぜすべて! また、「パイロンとは」など、Googleで基本的なものを調べるようにマネージャーに指示するにはどうすればよいですか。
26 management 

21
あなたが今までに見た中で最も印象的なプログラミングの偉業は何ですか?[閉まっている]
誰もが、最高のプログラマーは平均よりも桁違いに良いという古い格言を知っています。私は個人的には良いコードとプログラマを見てきましたが、そんなに馬鹿げたことはありません。質問は、あなたが目撃したことや聞いたことのあるプログラミングの最も印象的な偉業は何ですか? 印象的な定義は次のとおりです。 手元のタスクの範囲、たとえばジョンは、自分の会社のフレームワークを独力で開発しました。これは、他の200人が採用していたものと同等の範囲の作業です。 速度。たとえば、Stuは、独自のCコンパイラとシェルコマンドラインツールを含む、リアルタイムのマルチタスクアプリOS全体を1週間にプログラムしました。 複雑さなど、ジェーンは10ミリオンのLOCアプリ全体をサーバーのクラスターで機能するように再設計しました。そして、彼女は午後にそれをしました。 品質(例:チャールズのコード)は、LOCあたりの欠陥の割合が会社の平均よりも100倍少ない。さらに、彼のコードはすっきりしていて、誰もが理解できました。 明らかに、これらの特性が組み合わされ、それぞれが極端になればなるほど、偉業はより印象的です。 それで、私にそれを持たせてください。あなたが数えることができる最もばかげた偉業は何ですか?できるだけ詳細に説明し、都市伝説や誇張を避けてください。実際に保証できるものだけを投稿してください。 ボーナスの質問: ヘラクレスの仕事は1つでしたか、それとも定期的に人々を驚かせましたか? そのような印象的なパフォーマンスをどのように説明しますか? プログラマーは、このような素晴らしい仕事に対してどのように認識されましたか?

4
開発チームがVisual Studioの複数のプロジェクトに単一のソリューションを使用すると「相互依存の複雑さが増す」と主張するのはなぜですか?
既存の製品の新しいバージョンの開発を開始している外部チームの管理を支援しています。これまで、このチームは、展開可能なビルドを作成するために連携するVisual Studioの約30のモジュールに対して、単一のソリューションで単一のプロジェクトのモデルを常に使用していました。 これは、ビルドの信頼性と品質に有害な影響を及ぼします。常に最新のソースコードが送信されるとは限らないためです。すべての参照コードを単一のソリューションに統合するためにそれらを押すことを試みていますが、いくつかの抵抗があります-特に、すべてが配置されている場合、モジュール間の相互依存性(Visual Studioの「プロジェクト」を読む)が増加していることについて話し続けています単一のソリューションファイル。別のソリューションのコードは他で使用されていません。 これはナンセンスであり、優れた開発パターンはそのような問題を回避するだろうと私は主張します。 問題のチームは、既存の製品のバグ修正と新機能の開発も行いますが、その経験は控えめに言っても不十分であり、複数のソリューションに分割するというまったく同じ問題に苦しんでいます。ソース管理(TFS)へのアクセスを拒否されました。コードベースを統一するために取っているアプローチは、欠落している更新の数を減らし、時々発生する回帰よりも少なくすることです(はい、修正されたバグが再取得されています) -製品に導入されました)「ソリューションフォルダー全体のZIPを送信して、解凍し、Visual Studioで開き、F5 一般的な構造と品質の観点から、コードはかなり貧弱でサポートが困難です。この経験から、開発サイクルのできるだけ早い段階で作業プロセスを正しくしようと考えています。 私が見逃しているものはありますか?すべてのコードを分離しておく正当な理由はありますか?私のお金のために、それは一般的な知識になるほど説得力のある理由でなければなりませんが、私はすべてを知らないことを喜んで認めています。

2
Python(および他の動的言語)のどのセマンティック機能がその速度低下に寄与していますか?
私はPythonをよく知りません。動的言語(Python、Lua、Scheme、Perl、Rubyなど)の正確な機能が実装を強制的に遅らせていることを、より正確に理解しようとしています。 その一例として、Lua 5.3 メタテーブル機構は直感的にLuaを非常に遅くしますが、実際にはLuaは非常に高速(およびPythonよりも高速)であると噂されています。 また、私は現在のプロセッサ上のため、メモリがはるかに遅い生の計算よりであることを直感(おそらく間違ったものを)持っているラà、動的な型チェック((キャッシュミスでメモリアクセスが算術演算の何百ものと同じ時間が必要)if (value->type != INTEGER_TAG) return;でCの用語)は非常に高速に実行できます。 もちろん、プログラム全体の分析(スターリンスキームの実装のように)は、翻訳者が高速で実行されるため、動的言語の実装を行うことができますが、最初はプログラムアナライザー全体を設計する時間がないふりをしましょう。 (私はMELTモニターで動的言語を設計するようなもので、その一部はCに翻訳されます)

2
純粋な言語のガベージコレクションはどの程度違いますか?
Haskellのような純粋な言語では、すべてのデータは不変であり、既存のデータ構造は一切変更できません。さらに、不変データおよび関数型プログラミングパターンに関する多くのアルゴリズムは、本質的に大量のガベージをmap生成します(たとえば、中間リストの作成のチェーン)。 ガベージコレクターは、他の方法ではできない純度に直面して、どのような戦略と手法を採用していますか?純粋なコンテキストではない不純な言語のGCでうまく機能するものは何ですか?純粋な言語はGCに対して他にどのような新しい問題を引き起こしますか?

6
Swift関数と計算されたプロパティ
Event次のようなクラスがあるとします: class Event { private var attendees: [Person] = [] // Case 1 //******* // Should I use a func… func countOfAttendees() -> Int { return attendees.count } // …or a var var countOfAttendees: Int { return attendees.count } // Case 2 //******* // Should I use a func… func …


3
Pythonビジネスロジックを正確にdjangoに配置する場所
Django / Python / Web Developmentを学び始めたばかりです。この問題は、しばらく私を悩ませてきました。 Djangoで複数のテンプレートを使用してアプリケーションを作成しています。私は、基本的にそれぞれのテンプレートへの応答をレンダリングするだけのviews.pyを持ち、DBを構造化したmodels.pyを持っています。テンプレートの1つで、画像をアップロードする必要があります(実行できます)。アップロードされた画像の機能に基づいたロジックを実行する必要があります(まだ実行されていません)。このロジックには、多くの重い計算が含まれます。計算の実行後、ロジックは処理済みの情報(座標)をテンプレートに返す必要があります。 pythonファイルを次々に呼び出すスタンドアロンのPythonデスクトップアプリケーションで、これらすべてのアクションを正常に実行できました。ただし、これをWebアプリケーションにしたいので、Djangoフレームワークの使用を開始しました。 私は多くの検索を行いましたが、すべてのロジックを含むこのPythonファイルをどこに正確に配置すべきかをまだ理解できていません。別のクラスベースのファイルが(logic.py)あり、それを呼び出す必要がありview.pyますか?グーグルで調べたところ、多くの開発者がDjangoのmodels.pyにビジネスロジックを配置していることがわかりました。ただし、モデルはバックエンドと排他的に通信する必要があるため、直感的には正しくないと感じています。助けていただければ幸いです。事前に感謝します。

4
なぜC ++とJavaの両方が「参照」の概念を使用しますが、同じ意味では使用しないのですか?
C ++では、関数への参照引数により、関数が参照を他のものに参照させることができます。 int replacement = 23; void changeNumberReference(int& reference) { reference = replacement; } int main() { int i = 1; std::cout << "i=" << i << "\n"; // i = 1; changeNumberReference(i); std::cout << "i=" << i << "\n"; // i = 23; } 同様に、関数への定数参照引数は、参照を変更しようとするとコンパイル時エラーをスローします。 void changeNumberReference(const int& reference) …
26 java  c++  pointers  reference 

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