ソフトウェア工学

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

3
ユニットテストの直交性対ユニットテストの簡潔さ
ビデオゲームのステアリングシステムの単体テストを書いています。システムにはいくつかの動作があります(理由Aのためにこの領域を避け、理由Bのためにこの領域を避けてください。それぞれが領域のマップに少しのコンテキストを追加します。 動作の単体テストの書き方を決めるのに苦労しています。TDDが示唆しているように、私はその振る舞いが望ましい動きにどのように影響するかだけに興味があります。たとえば、avoid-because-of-reason-Aは、悪い位置を示唆する位置からの移動をもたらすはずです。実際には、ビヘイビアーがマップにコンテキストを追加する方法や理由は気にしません。目的の動きが位置から離れているだけです。 したがって、各動作のテストでは、動作を設定し、マップに書き込むようにし、マップ解析関数を実行して目的の動作を実現します。その動きが私の仕様を満たしているなら、私は幸せです。 ただし、現在のテストは、正しく動作する動作と、正しく機能するマップ解析機能の両方に依存しています。解析機能が失敗した場合、数回ではなく数百回のテストに失敗します。多くのテスト作成ガイドは、これが悪い考えであることを示唆しています。 ただし、マップをモックアウトすることで動作の出力に対して直接テストする場合、確実に実装に緊密に結合していますか?わずかに異なる動作を使用して、マップから同じ目的の動きを取得できる場合、テストは合格します。 だから今、私は認知的不協和音に苦しんでいます。これらのテストを構成する最良の方法は何ですか?
14 tdd  unit-testing 

7
「失敗」プロジェクトが実際に「成功」​​した場合の対処方法
あなたが取り組んでいるプロジェクトが明らかに不十分に構築されており、将来失敗し、維持するのが悪夢である状況にあった場合、あなたはどうしますか...しかし、それはクライアントによって幸せです? 私は気にしないでください?クライアントは、これよりも優れたアプリケーションを使用できることに気づいてさえいませんか? どの時点でそれを正しく構築することを気にするのを止めて、ただ流れに行くのですか?

5
単体テストはMVCパターンの主な目的ですか?
最近のインタビューで、質問の1つは「なぜMVCを使用するのですか?」実世界のシステムの多くは、どれほど近いかと答えただけです!保守性、スケーラビリティなどに関しては利点があることを説明しました。しかし、彼らは納得できず、MVCは主に「簡単な単体テストを可能にする」ために使用されると言いました。 私は彼らのものが有効なポイントであることを知っていますが、(i)ユニットテストケースを書かないと決めたとしても、MVCはおそらく選択肢であるため、それが主な理由であるかどうか疑問ですMVCに従ってください。 質問は「ユニットテストはMVCパターンの主な目的ですか?」です。 編集:私は彼らがテスト駆動開発/ NUnitテストケースを書くことの容易さについて言及しているかもしれないと思います。これは、モデルのテストケースを作成できるためです(ビューがモデルの状態の変化を正確に反映している場合)。間違っている場合は修正してください。
14 mvc 

6
なぜバイオインフォマティクスでPerlがそれほど頻繁に使用されるのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 バイオインフォマティクスで非常に役立つのは、Perlについての何ですか?なぜC ++、Matlab、Pythonが大きな言語ではないのですか?

3
AVLツリーと現実の世界
学校では、挿入または削除時にAVLツリーのバランスを取る方法を教えています。 この種の知識は、実際に実際どのように役立つのでしょうか?誰かがこの種の知識が実際にいつ役立つのか例を示すことができますか? 私が見たものから、職場ではそのような詳細はほとんど出てきません... アルゴリズムと一部のデータ構造に関する詳細な知識が重要になることはありますが、AVLツリーの回転(および同様の詳細な概念)などの詳細は重要ではありません。 ありがとう!

4
基本的なハードウェアと機能的パラダイムがあまりにも異なるため、一般的に効率的ではないでしょうか?
SOからの質問に触発された:https : //stackoverflow.com/questions/6623391/how-to-gain-control-of-a-5gb-heap-in-haskell FPの多くの長所と短所については長い議論の余地がありますが、現時点では、最新のハードウェアでのFPの主な効率に範囲を絞りたいと思います。 定説: 機能的パラダイムは不変性とステートレス(?)を意味しますが、機能的プログラムを実行するハードウェアはステートフルな有限オートマトンです。「純粋な機能」プログラムを「ステートフルなハードウェア」表現に変換すると、プログラマーはほとんど制御できず、オーバーヘッド(?)が発生し、ハードウェア機能の使用が制限されます(?)。 私は疑問の声明で正しいか間違っていますか? FPは、現代の汎用コンピューターアーキテクチャでの主要なパフォーマンスペナルティを意味する/しないことを証明できますか? 編集: いくつかのコメントに応じて既に述べたように、質問は実装のパフォーマンスと詳細に関するものではありません。これは、プリンシパルオーバーヘッドの有無に関するものであり、ステートフルオートマトンでFPを実行するともたらされる可能性があります。

7
アジャイルソフトウェア開発は、契約で定義されたプロジェクトで使用できますか?
私は最近、仲間の開発者とアジャイルソフトウェア開発について話し合いました。私はその原則を理解していますが、要件が絶えず変化することで、プロジェクトが永遠に続く可能性が生まれるようです。しかし、少なくとも私が働いている場所では、プロジェクトは契約であるため、完成する必要があります。 つまり、一部のプロジェクトでは顧客が不完全なアプリケーションを使用できないため、最初の反復には数か月かかる場合があります。一部のプロジェクトでは、最初に終了を定義する必要があり、それを反復に分割し、各反復後に定義を改良する必要があると思います。ただし、常にこの定義が必要です。 アジャイルソフトウェア開発が要件の変化を受け入れる場合、それがどこで終わるのかをどのように知るのですか 最終結果が常に変化する場合、どのようにプロジェクトの予算を立てることができますか? アジャイルソフトウェア開発は、アジャイル製品というよりもアジャイルプロセスに関するものですか?
14 agile 

1
深刻な個人プロジェクトをResumeに含める方法 [閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 4年前に閉鎖されました。 私の兄弟は、商業化できる興味深いビジネスアイデアを思いつきました。1か月以上にわたって、SaaSの基盤を構築してきました。私はこれを商業プロジェクトとして扱っており、パターンとベストプラクティスを使用して設計しています。 これを履歴書に含めたい理由の1つは、フルタイムの仕事に最新のASP.Netテクノロジー(Linq / Entity Relationships、jQuery、ASP.Net MVC 3、Silverlightなど)が関与していないため、履歴書が不足していることです。影響。私のフルタイムの仕事では、7年前の適切に設計された製品に取り組んでいます。データ層とWeb層がうまく機能するため、リクルーターがLinq、ASP.Net MVC、jQueryをクールだと考えているため、それらをリエンジニアリングするのは愚かなことです。 実験やQuick'n'Dirtyペットプロジェクトのように聞こえないように、個人プロジェクトをResumeに含めるにはどうすればよいですか?
14 resume 

8
コンピューター言語の多言語になる価値はありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 プログラマーは自分自身を改善するために多くの異なる言語を学ぶべきだとよく耳にします。私はまだ学校に通っていて、大きなプログラミングの経験はありません(1年以上)。しかし、プログラミングスキルを向上させるという高貴な意図は、ある種のOCDに変わりました。比較的知られているプログラミング言語をすべて習得するまで落ち着かないと感じています。 そして、ここに質問自体があります:プログラミング言語の多言語は実際にあなたを助けますか(そして、私は通常、「プログラマーは少なくともすべてのパラダイムを知っているべきです」という意味ではなく、あなたが通常耳にするすべての言語を意味します)?誰か同じような経験がありますか?仕事/スキル/キャリアに役立ちますか?どのくらいの頻度でこれらのスキルを適用できますか?

3
動作としてインターフェイスを持つ抽象基本クラス?
C#プロジェクトのクラス階層を設計する必要があります。基本的に、クラスの機能はWinFormsクラスに似ているため、WinFormsツールキットを例に取りましょう。(ただし、WinFormsやWPFは使用できません。) すべてのクラスが提供する必要があるいくつかのコアプロパティと機能があります。寸法、位置、色、可視性(true / false)、Drawメソッドなど。 設計上のアドバイスが必要です。抽象ベースクラスと実際には型ではなく、動作に似たインターフェイスを持つ設計を使用しました。これは良いデザインですか?そうでない場合、より良いデザインになります。 コードは次のようになります。 abstract class Control { public int Width { get; set; } public int Height { get; set; } public int BackColor { get; set; } public int X { get; set; } public int Y { get; set; } public int BorderWidth { get; …

11
クラシックASPにこだわった場合、どうすれば面白くすることができますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 4年前に閉鎖されました。 以前は非常に小さなアウトソーシング会社(4人のプログラマーと上司)で働いていましたが、ストレスと頻繁な長いシフトが状況を耐え難いものにしたとき、私はもっとリラックスしたスケジュールでより良い有料の仕事に切り替えました自由時間。 ただし、問題は、ほとんどの場合、すべてがAS400システムにすべてを保存するカスタムメイドのC ++キューシステムとインターフェイスするクラシックASPでコーディングされていることです。私の上司はこれに向けて最初の努力をした開発者の1人であり、昨日のツールで今日のビジネスニーズを開発することの難しさが増しているにもかかわらず、当然他の言語/テクノロジーへの切り替えを承認しません。 近い将来、Classic ASPを使ったコーディングにかなりこだわっており、以前は.NETやJavaを使っていたので、少なくとも面白くする方法を見つけるのに苦労しています。後方に...何かアドバイスは?

2
デコレータパターンはJava IOクラスに存在しますか?
割り当てのために、私は4デザインパターンのギャングのどのクラスを見つけるために持っているjava.io.Readerとそのサブクラスをjava.io.PushbackReader、java.io.BufferedReaderとjava.io.FilterReaderして建設されました。 この投稿によると、デザインパターンはデコレータパターンになります。これは場合にのみ、私には理にかなってPushbackReader、BufferedReaderそしてFilterReader効果的に作成し、同時に使用されるように装飾することができますBufferedPushbackFilterReader。それはアイデアですか?

7
intのようなプリミティブ型をtypedefで処理する方法
私は次のようなC ++コードをたくさん見ましたtypedef。 typedefC ++プリミティブを使用するのとは対照的に、このような多くのを使用する利点は何ですか?これらの利点も達成できる別のアプローチはありますか? 最終的に、データはすべてメモリに保存されるか、ビットとバイトとしてワイヤを介して送信されますが、本当に重要ですか? types.h: typedef int16_t Version; typedef int32_t PacketLength; typedef int32_t Identity; typedef int32_t CabinetNumber; typedef int64_t Time64; typedef int64_t RFID; typedef int64_t NetworkAddress; typedef int64_t PathfinderAddress; typedef int16_t PathfinderPan; typedef int16_t PathfinderChannel; typedef int64_t HandsetSerialNumber; typedef int16_t PinNumber; typedef int16_t LoggingInterval; typedef int16_t DelayMinutes; typedef int16_t …

1
アドイン、アドオン、プラグイン[終了]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的なものであり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 8年前に閉鎖されました。 一見、AddIn、AddOn、およびPluginという言葉は同じ意味を持っていますが、それらの間にはいくつかの違いがあります。AddIn、AddOn、およびPluginの微妙な違いを説明してもらえ ますか?

9
Web開発用の新しいプログラミング言語をお探しですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 プログラミング言語とその意図された目標の良い、具体的な概要を提供する、より偏りのないリソースがあるかどうか疑問に思っています。新しい言語を学びたいのですが、各言語のサイトにアクセスしてもうまくいきません。それぞれが、その弱点や具体的な目標についてはあまり言及せずに、どれだけ素晴らしいかについて語っています。 Rubyは、シンプルで生産性に重点を置いた動的なオープンソースプログラミング言語です。 Pythonは、より迅速に作業し、システムをより効果的に統合できるプログラミング言語です。 Vic Cherubiniは、長年PHP開発者でしたが、私の苦境をうまくまとめています。 私はPHPをよく知っていて、独自のフレームワークを持っていて、すぐに動作して何かを実行することができました。 MVC革命全体でこのようにプログラムしました。私はPHP開発者としてより良い仕事(より良い給料、より良いタイトル)を手に入れましたが、私自身の時間に書いたコードが素晴らしく、仕事で一緒に働いたコードが恐ろしいことを認識している間ずっとずっと。恐ろしいより悪い ひどい。OSコマースレベルが悪い。仕事で一緒に働いたコードが私を悲惨にさせたので、サイドプロジェクトがあると私は正気になりました。 これが、私の側のプロジェクトと新しいプログラミングベンチャーのためにPHPを退職する理由です。私はPHPで過ごしています。あなたがする場合、疲れ。私は言語としてトップにいると思うレベルに達しました。すぐに新しい言語に移行しなければ、プログラミングは完全に完了しますが、それは望ましくありません。 私が調べた言語には、JavaScript(node.js用)、Ruby、Python、およびErlangが含まれます。ScalaやC ++についても考えました。 問題は、どれが私のニーズに最適に対処するために構築されているかを判断することです。 だから、誇大広告をスキップして、プラットフォームの成熟度、コミュニティの規模、その言語の長所と短所についての本当の情報を得るためにどこに行くことができますか?これらを知っているなら、私のウェブ開発を続けるために言語を選ぶのは簡単でしょう。 更新 各スレッドに4MBのオーバーヘッドがあるか、最大同時接続数が999であるか、「X」機能を実行するパッケージがないか、またはサポートがあるため、何らかの言語で4か月先に行きたくないと思います新しい言語ブランチのために段階的に廃止されています。

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