ソフトウェア工学

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

4
JavaからLinuxへの.NETはWindowsに対するものですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 Javaは、.NETがWindowsアプリケーション開発の標準であるのと同じように、Linuxアプリケーション開発の事実上の標準になっていますか?そうでない場合はなぜですか?
14 java  .net  comparison 

16
論理的に不可能な最高の(最悪の)タスクが割り当てられていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 9年前に閉鎖されました。 あなたの机の上に置かれたプロジェクトや仕様はどうでしたか?ジレンマを「要求者」にどのように説明しましたか?さらに重要なことは、基本的な問題を説明した後、彼らは理解したのですか?

4
再設計時にテストを効率的に機能させるにはどうすればよいですか?
十分にテストされたコードベースには多くの利点がありますが、システムの特定の側面をテストすると、ある種の変更に耐えるコードベースが得られます。 例は、特定の出力(テキストまたはHTMLなど)のテストです。多くの場合、テストは、特定のテキストブロックを一部の入力パラメーターの出力として期待するため、またはブロック内の特定のセクションを検索するために(単純に?)書き込まれます。 新しい要件を満たすため、またはユーザビリティテストがインターフェイスの変更をもたらしたため、コードの動作を変更するには、テストも変更する必要があります。おそらく、変更されるコードの具体的な単体テストではないテストでさえもです。 これらのテストを見つけて書き換える作業をどのように管理しますか?「すべてを実行して、フレームワークでそれらを整理する」ことができない場合はどうでしょうか。 他にどのようなテスト対象コードが習慣的に脆弱なテストになりますか?

10
私はめったにコーディングしません。これは悪い兆候ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私はコンピューターサイエンスの学生で、現在はJavaを学んでいます。 私は良い開発者/プログラマーになりたいです。 私は読書が好き。インターネットで関連トピックを検索し、研究しています。StackOverflowや他の優れたプログラミングWebサイトを毎日参照していますが、コーディングはめったにありません。これは悪い兆候ですか?はいの場合、この問題を克服するにはどうすればよいですか?

17
ソフトウェアの欠陥の主な原因は何だと思いますか(およびそれらを最小化する方法)[完了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 欠陥を次のように定義します。 「要件に従って機能することを妨げるアプリケーション設計またはコード内の何か。」 欠陥の原因についてのアイデアを探しています。例えば、ヒューマンファクター、テストの欠如、プロトタイピングの欠如、これらを緩和するための考えなどです。

7
修正したコードのうち、誇りに思っている最悪の部分は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 誇りに思っているものがいくつかありましたが、そのうちのいくつかは数年前に自分で書いたものです。必ずしもバグがある必要はなく、単に悪いコードです。

6
トラフィックの多いWebサイトをスケールアウトするにはどうすればよいですか?
キャパシティを処理するために「スケールアウト」する必要があるWebサイトに対して、どのようなベストプラクティスを実施する必要がありますか?これは、人々がクラウドを検討している今、特に関連していますが、基本を逃している可能性があります。 開発レベルのタスクからインフラストラクチャー、管理まで、ベストプラクティスと思われるものについてお聞かせください。

4
変化する要件にどのように対処しますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 私の現在の仕事では、要件の変更がたくさんあるように感じます。私たちは「アジャイル」ショップですので、私たちは調整することになっていると思いますが、時には変化は大きく、些細なことではありません。 私の質問は、変化のコストをどのように効果的に伝えるかです。アジャイルであるため、変更が十分に大きい場合、現在のスプリントから何かがドロップされますが、通常は次回に追加されます。私たちのモデルはSaaSであるため、最終顧客は事実上ビジネスそのものであり、彼らはn週間後にカット機能を取得することを知っています。 私は本当にそれだけ遅れたとして、通信に使用するものではありません、私は機能の除去である時に取得しようとしていますどのような推測のn週間。変更にかかるコストをビジネスに理解させるには、他にどのような方法が必要ですか?

2
ランダムな何かを示すときに「42」が優先されるのはなぜですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私はこれをSOで何度も見ました。質問が曖昧で、誰かが魔法の答えを尋ねているときはいつでも、誰かが答えは42であるというコメントを残します。 。それで、その背後に何か歴史がありますか、それとも単なる偶然ですか?
14 history  numbers 

2
技術的な意思決定をしようとしているビジネス
多くの場合、ビジネスがクライアントに新しい機能を約束するシナリオに出くわします。ビジネスは、機能が特定の方法で実装されることを約束します。ビジネスによって約束されたこれらの技術的な詳細は、通常貧弱です。残念ながら、クライアントは現在設定されており、この機能をビジネスで説明されている方法で実装する必要があります。 最終的に、ビジネスは品質と保守性に関係なくこの機能を完成させたいだけです。押し戻す良い方法はありますか?要件を収集する前に技術的な詳細を提供するのは悪い考えだと、ビジネスにどのように説明できますか?

10
コードの正当性の証明は主流になりますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 最も些細なプログラム以外はすべてバグで満たされているため、それらを削除することを約束するものは非常に魅力的です。現時点では、正当性の証明はコードが非常に難解です。これは主にこれを学ぶことが難しく、プログラムが正しいことを証明するために余分な労力がかかるためです。コードの証明はこれから始まると思いますか?

12
タイプとスコープの接頭辞は価値のある命名規則ですか?
最近、ソフトウェア開発者として最初の仕事を始めたとき、コードの命名規則に従う必要がないと言われたとき、私は少し投げられました。他のより大きなプロジェクトに取り組んでいるグループによって書かれたコードは命名規則に従っていましたが、私は新しいスタンドアロンのアプリケーションを書くために持ち込まれたので、それは特に重要ではないという感じでした。それが私の心配の最後だったので、私はちょうどその既存の慣習を取り、それで走りました。 int nTickCount bool bConnected object[] m_aItems fSum += fWeight * fValue class cManager enum etSystemStates etSystemStates eState cManager.cs しかし、実際に価値があるのでしょうか?この種の命名規則に従うことがエラーの理解と検出に与える正味の効果を判断するのは難しいと思いますが、視覚的には、それはちょっといように見えます。さらに、cSomethingと呼ばれるプロジェクトにすべてのクラスとファイルがあることは、非常に簡単です。 私が採用しているアルゴリズムやアーキテクチャのような明らかな違いをもたらすものと比較した場合、それはリモートで大したことではないという幻想ではありません。しかし、私が書いたコードのすべての行に影響する規則は、正しく理解する価値があるようです。 使用する必要がある場合、最もエレガントで効果的な命名規則は何ですか?タイプやスコープを示していますか?

5
技術面接とプログラマー能力[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私が言うことは本質的に少し物議をかもしているかもしれませんが、私は今日非常に落胆しています-そして私はこれを尋ねます。 私はインターンシップのポジションについて大手テクノロジー企業にインタビューしたところ、典型的なアルゴリズム指向のインタビューの質問がたくさん聞かれました。今、私の背景を考えると、私はアルゴリズムに強いと思います(大学院レベルのアルゴリズム-NPの完全性やそれ以上のもの(近似アルゴリズムとランダム化アルゴリズム)にも優れた成績を収めています)が、残念ながらインタビューを失敗しました。文字列の問題を約10分で解決する非常に効率的な方法を考えてください。面接が終わったら、コップ1杯の水を飲み、バナナを食べてしばらくリラックスしてから、問題をもう一度試しました。回答5分以内に到着する可能性があり、さらに最悪の事態でした-私は実際にそのトラックにいて、インタビュアーがそれについてヒントを与えましたが、あまりにも多くのプレッシャーが私を料理しました。私の全体的な経験から、技術面接について考えるようになりました。いくつか質問があり、このフォーラムでそれらを提起したかった- 誰かの技術的能力を30分で判断することは本当に可能ですか?正直なところ?それともサイコロを投げただけですか? 技術面接の質問は問題解決能力を測定しますか?この点は非常に議論の余地がありますか?博士課程の学生として、数学の問題解決には、これまで聞いたことのないことを解決することが含まれることを知っています。一方、2つのリンクリストを並べ替えてマージしたり、k番目のレベルでバイナリツリーのすべての要素を印刷したりすることは、誰かが事前に解決策を見たり問題を解決したりすると、「単なる演習」になりますか? これらのインタビューで空飛ぶ色で出てきた人々は、偉大なプログラマーになることを続けますか?彼らは続けて、洗練されたゲームエンジン、グラフィックライブラリを設計し、高速な分岐結合フレームワークを作成しますか?技術面接での成功と実際のプログラミング能力との間に正の相関関係があることを示す証拠はありますか?それとも、これらのインタビューは「物事を成し遂げる」タイプの人(Spolsky)を見つけることに向けられたものですか? ICML、VLDB、モビコムなどの画期的なアイデアを発表している多くの学者が、これらのインタビューにふさわしいことは間違いないでしょう。しかし、私は彼らがあなたがこの惑星で見つけるであろう最も賢い人々の一部であることをあなたに保証することができます。 私は主にアカデミア(大学生)です-ですから、フェンスの向こう側にいる誰かからの知覚に大いに感謝します。これらのインタビューを実際に行っている人はいますか? [わかりました。すべての素晴らしく、思慮深い応答をありがとう。もう質問したくないので、この質問に答えてください。 候補者Xが既知のオープンソースプロジェクトに貢献した作品の優れた公開ポートフォリオを持っているとします。実際に行ってパッチを確認し、彼が閉じたバグを確認して、彼が作成した設計を確認できます。その場合、問題は、彼の公開されている/検証可能な作品にどれだけの重みを与えて、15分以内に非常に工夫されたバイナリツリーインタビューの質問にどれだけうまく答えるかです。]
14 interview 

6
純粋に機能的なものと伝えるもの、尋ねないでください?
「関数の理想的な引数の数はゼロです」は明らかに間違っています。引数の理想的な数は、関数に副作用がないようにするために必要な数です。それよりも少ないと、機能が不必要に不必要になり、成功の穴から離れて痛みの勾配を登らざるを得なくなります。時々、「ボブおじさん」が彼のアドバイスにスポットを当てています。時々彼は見事に間違っています。彼のゼロ引数アドバイスは後者の例です (ソース:このサイトの別の質問の下での@David Arnoによるコメント) コメントには133の賛成票があります。そのため、そのメリットにもっと注意を払いたいと思います。 私が知っている限りでは、プログラミングには2つの別々の方法があります:純粋な関数型プログラミング(このコメントが奨励するもの)と伝える、尋ねない(このWebサイトでも時々推奨されています)。私の知る限り、これらの2つの原則は基本的に互換性がなく、互いに反対に近いものです。副作用しかありません」。また、純粋なファンシトンが機能的パラダイムのコアと考えられているのに、聞かないで、OOパラダイムのコアと考えられていると思ったので、私はちょっと困惑しています。 開発者はおそらくこれらのパラダイムのいずれかを選択し、それに固執すべきでしょうか?まあ、私は自分を決して従わせることができなかったことを認めなければなりません。多くの場合、値を返すのが便利だと思われ、副作用でのみ達成したいことをどのように達成できるか本当にわかりません。多くの場合、副作用があると便利に思えますが、値を返すだけで達成したいことをどのように達成できるか本当にわかりません。また、しばしば(これは恐ろしいことだと思います)両方を行うメソッドがあります。 しかし、これらの133の賛成票から、私は現在純粋な関数型プログラミングが「勝っている」と推論しています。これは正しいです? したがって、このアンチパターンに乗ったゲームの例で私が作ろうとしているのは、純粋に機能的なパラダイムに準拠させるためにそれを実現したい場合、どうすればいいのでしょうか?! 戦闘状態にあることは私にとって理にかなっているようです。これはターンベースのゲームであるため、私は辞書に戦闘状態を保持します(マルチプレイヤー-同時に多くのプレイヤーがプレイする多くの戦闘があるかもしれません)。プレーヤーが順番を回すたびに、(a)状態を適宜変更し、(b)更新をプレーヤーに返します。これは、JSONにシリアル化され、基本的に、ボード。これは、両方の原則に同時に違反していると思われます。 OK-本当にやりたいなら、メソッドをその場で修正するのではなく、戦闘状態に戻すことができます。だが!それから、完全に新しい状態を変更するのではなく、単に戻すために、戦闘状態のすべてを不必要にコピーする必要がありますか? おそらく、移動が攻撃である場合、HPが更新されたキャラクターを返すことができますか?問題は、それほど単純ではないことです。ゲームのルール、動きは、プレイヤーのHPの一部を削除するだけでなく、多くの場合、より多くの効果をもたらします。たとえば、キャラクター間の距離を広げたり、特殊効果を適用したりすることができます。 私はその場で状態を変更して更新を返す方がはるかに簡単に思えます... しかし、経験豊富なエンジニアはこれにどのように取り組むでしょうか?

3
DRYおよびOODによるコードカップリングの導入
DRYとコードの結合に関するガイダンスを探しています。私は自分のコードを複製したくないし、無関係なモジュール間のコードの結合も嫌いです。そのため、複製が導入されてから1年後に同一の重複コードが見つかった場合、重複コードをリファクタリングします。しかし、現実の世界がはるかに予測不可能な状況を経験し、コードをリファクタリングした後、コードを再度フォークする必要がある状況が発生しています。 たとえば、ガソリン車、ガソリンSUV、電気自動車、電気SUVを処理するコードがあった場合、「コード」を「ガソリン」階層と「電気」階層にリファクタリングするとします。どちらも「車両」階層から派生しています。ここまでは順調ですね。そして、私の会社はハイブリッド車とハイブリッドセミを導入します。これには、元の階層自体に中核的な変更が必要になります。たぶん、ガソリンと電気階層の間の「組成」が必要になるでしょう。 上記のすべての製品に共通する変更を実装するのにかかる時間が長くなるため、明らかにコードの複製が悪いことです。しかし、一般的なコードをリファクタリングすると、製品固有のバリエーションを導入することも同様に難しくなり、バグを修正するためにコードの行を見つけなければならない場合に多くの「クラスジャンプ」が発生します。すべての子孫の間でトリガー回帰のバグをトリガーします。 DRYと不要なコードカップリングの最適なバランスをどのように実現しますか?
14 design  dry  coupling 

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