ソフトウェア工学

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

5
ランダムイベントに基づいてコードをカバーするテストケースを設計するにはどうすればよいですか?
たとえば、コードが0〜10のランダムなintを生成し、結果ごとに異なる分岐を取る場合、そのようなコードで100%のステートメントカバレッジを保証するテストスイートをどのように設計できますか。 Javaでは、コードは次のようになります。 int i = new Random().nextInt(10); switch(i) { //11 case statements }

2
Objective-Cのメソッドオーバーヘッドにより、「多数の小さなメソッド」の設計アプローチはお勧めできませんか?
Clean Codeの Bob Martinが推奨しているように、私は一般的に小さなメソッドを使用することを好みます。また、Objective-Cの内部についても十分に読んで、メッセージのディスパッチがどのように機能するかについて少なくともある程度理解しました(これについてはbbumsシリーズが特に有益です)。 時期尚早な最適化の懸念にもかかわらず、Objective-cがobjc_msgSendで実行するすべての作業が、実用的な観点から、Objective-Cプロジェクトには「多くの小さなメソッド」アプローチが不適切であるかどうかを知りたいと思います。 経験的な調査結果は特に歓迎します(多分私はいつか自分でテストをセットアップするでしょう)。大規模なObjective-Cプロジェクトを書いた人からの経験も素晴らしいでしょう。 明確化 質問の一般的な口調は意図的です。特定のアプリのパフォーマンスチューニングについては質問していません(そのため、SOではなくここで質問します)。Objective-Cの言語特性が特定の設計アプローチを妨げているかどうかについては詳しく説明しません。Appleや他の関係者(githubなど)から見たコードの多くは大きなメソッド(およびクラス)に向かう傾向があることに気付きましたが、これは言語のために忍び込んだバイアスかどうか疑問に思っています自体。もちろん、間違ったコードを読んでいた可能性があります。または、存在する場合は、傾向をもたらした技術的要因ではなく文化的要因である可能性があります。 (価値があることのために、私は現在Objective-Cを書いており、小さなメソッドを使用しています) さらなるリクエスト 与えられた両方の答えに同意します。さらにもう1つ欲しいのは、誰かが素敵な短いメソッド(および小さなクラス)を使用する(願わくば実質的な)オープンソース(またはそうでなければ見える)のObjective-Cコードベースを指し示すことです。Objective-Cには、たとえばフィットネスソースと比較するものはまだありません。

16
デバッグに費やす時間を減らす方法 [閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 パレートルールに従って、プログラマーは本当に便利なことに時間の20%しか費やしません。 デバッグに80%の時間を費やし、小さなものを修正してすべてが機能するようにします。 デバッグに費やす時間を減らす方法はありますか?

2
Bツリーやその他のデータ構造は、ソリッドステートドライブの出現により廃止されますか?
現在、多くの(おそらくほとんどの)データベースアプリケーションは、Bツリーとバリエーションを使用してデータを格納しています。これは、このデータ構造がハードディスクの読み取り、書き込み、およびシーク操作を最適化するためです(これらの操作は、全体的な効率において重要な役割を果たしますデータベース)。 ただし、ソリッドステートドライブ(SSD)は従来のハードディスク(HDD)を完全に置き換える必要がありますが、Bツリーとバリエーションは時代遅れになり、ダイレクトアクセスメモリでより効率的に動作するデータ構造の余地ができます。もしそうなら、それらの構造は何になりますか?(例:ハッシュテーブル、AVLツリー)

5
「新しい」キーワードを使用する必要がある場合と使用しない場合
Misko HeveryによるUnit Testingに関するGoogle Tech Talkのプレゼンテーションを見て、彼newはビジネスロジックコードでキーワードを使用しないように言った。 プログラムを作成し、newキーワードをあちこちで使用することになりましたが、それらは主にデータを保持するオブジェクトをインスタンス化するためのものでした(つまり、関数やメソッドはありませんでした)。 私は自分のプログラムに新しいキーワードを使用したときに何か間違ったことをしたのだろうかと思っています。そして、その「規則」をどこで破ることができるでしょうか?

5
多くの順列を持つ何かに対してTDDを行う方法は?
非常に多くの異なるパスをたどることができるAIのようなシステム、または実際に複数の異なる入力を持つ任意のアルゴリズムを作成する場合、可能な結果セットには多数の順列が含まれることがあります。 結果の多くの異なる順列を出力するシステムを作成するときに、TDDを使用するにはどのようなアプローチをとるべきですか?

2
帰属が仮名で行われる場合、コードの権利を所有しているのは誰ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 コーダーが属性に本名ではなく仮名を使用したいくつかのケースを知っています。 例は次のとおりです。 聡中本(ビットコイン) なぜ(Ruby) 私が疑問に思ったことの1つは、コードの権利を所有する仮名を介して帰属が行われるかどうかです。

6
「いつ」解決されるべき増え続ける問題の山をどのように処理しますか?
JIRAを使用して、ソフトウェアプロジェクトの問題を追跡しています。私たちが気づいた1つの効果は、新しい問題を頻繁に作成することですが、問題がいつ修正されるのか/いつ修正されるのかはまだわかりません。そこで、そのような問題に割り当てられる偽の「遠い未来」マイルストーンを発明しました。 偶然にも、このマイルストーンに割り当てられた問題の山は常に増え続けているため、これは良いアプローチではないようです。それらの多くは今では非常に多くあるため、それらすべての妥当性を確認するのは非常に多くの作業になりました。それらの一部は、それらに関連するコンポーネントが削除されたため無効になりました。それらのいくつかは他の問題によって複製されました。それらのいくつかは、彼らがもう何についてであるかを本当に誰も本当に知らないほど不十分に表現された説明を持っています。 他のソフトウェア開発チームは、有効であるが、いつでも修正されないかもしれない問題にどのように対処しますか。まったくわざわざ録音しますか?それらを次の計画バージョンに割り当て、次のリリースが近づくにつれてそれらを再度確認しますか?他に何か?

6
インターフェイスメソッドを抽象メソッドと見なすことはできますか?
私はそれについて考えていた、と私はいくつかの疑問がありました。 たとえば、インターフェイスを宣言するとき: public interface MyInterface { public void method1(); public void method2(); } これらのインターフェイスメソッドは抽象と見なされますか?つまり、抽象メソッドの概念は次のとおりです。 抽象メソッドは宣言されたメソッドですが、実装は含まれていません。 だから、これらのメソッドは抽象的と見なすことができますか?私はabstract言葉を使っていないので、それらは「純粋な」抽象メソッドではありませんが、概念的にはそうであるように見えます。 それについて何か教えていただけますか? ありがとう。

2
IETFはW3Cとどう違うのですか?
私はこれらの組織(研究所、エンティティなど)を3か月近く追跡していますが、どちらもインターネットをより良い場所にしようとしていると主張しています。彼らは、RFC(IETFの場合)および勧告(W3Cの場合)という名前でドキュメントを作成し、他のユーザーをガイドしています。 さらに、WHATWGと呼ばれる別の組織がWeb開発の別の道を開始し、別のコミュニティがInternet Societyというタイトルで活動しています。 どうして多くの組織なのかわかりません。つまり、単純に統合できないのですか?彼らは本当に違いますか?どうやって?

7
ドメインへまたはドメインへではない
SQL92およびSQL99標準は、DDLコンストラクトを定義しています。すべてのデータベースがこれをサポートしているわけではなく、別の名前を持っているわけでもありません(たとえば、SQL Serverにはユーザー定義型があります)。CREATE DOMAIN これらにより、データベースで使用される制約されたデータ型を定義し、許可された値に関連するルールを簡素化し、強制することができます。このようなデータ型は、列宣言、ストアドプロシージャや関数への入力および出力などで使用できます。 私が知りたいのですが: データベース設計で実際にドメインを使用していますか? その場合、どの程度ですか? それらはどれほど有用ですか? どのような落とし穴に遭遇しましたか? これらを将来のデータベース開発で使用する可能性を評価しようとしています。
15 sql  sql-domain 

3
名前空間とクラス名のガイドライン
utilsやその他のヘルプクラスが関係しているときに、クラスとサービスの名前を正しく指定できません。 以下をどのように構成しますか? EventService.cs EventServiceUtils.cs EventServiceValidators.cs EventServiceCoordinator.cs 等... 上記のサービスと同じニーズを持つ複数のサービスがあります。1つの考えは、このすべてを適切なネームスペースに分けて、次のように見えるようにすることです。 Services.EventService.EventService.cs //(the actual service) Services.EventService.Validators.DateValidator.cs Services.EventService.Validators.ParticipantValidator.cs Services.EventService.Coordinators.ParticipantCoordinator.cs Services.EventService.ExtensionMethods.Extensions.cs 等々。もちろん、すべての名前空間は個別のフォルダーです。しかしDateValidators、他のサービスにはおそらくもっと多くのものがあるため、これは100%ではありません。 またServices.EventService.EventService.cs、名前空間にクラス名が含まれていますが、これも良くありません。を使用できますServices.Event.EventService.csが、もちろんその名前のエンティティは既に存在します。 これがドメインモデルです。
15 c#  architecture 

7
CPUではなくGPUに作業をオフロードする必要があるのはいつですか?
OpenCLなどの新しいシステムは、グラフィックプロセッサでより多くのコードを実行できるように作成されています。これは、システムで可能な限り多くのパワーを利用できるようにする必要があるためです。 ただし、これらすべての新しいシステムでは、あらゆる点でGPUがCPUよりも優れているようです。GPUは並列計算を実行できるため、マルチコアGPUは実際にはマルチコアCPUよりもはるかに優れているように見えます。一度に多くの計算を行うことができ、本当に速度が向上します。シリアル処理がパラレルよりも優れ、高速、かつ/または効率的である特定のケースがまだありますか?
15 optimization  cpu  gpu 

2
作成アクションと編集アクションを別々にするか、作成アクションと編集アクションを1つにまとめる方が良いでしょうか?
ASP.NET MVC 2を使用して、コントローラー/ビュープレゼンテーションレイヤーと、ビジネスロジックレイヤー、データアクセスレイヤー[ストアドプロシージャおよびストアードプロシージャと通信するクラス/メソッド]で構成されるモデルを使用しています。 ビジネスレイヤー以上では、ほとんどの目的で、Editはオブジェクトの作成とオブジェクトの編集の両方を表すことができるようです。これは、「保存」メソッドを定義するリポジトリ設計パターンとよく一致します。IDが0の場合はストアドプロシージャをチェックインし、0の場合は新しいオブジェクトを作成します。それ以外の場合は、カテゴリIDが1に一致するため、既存のオブジェクトを更新できます。 議論の第一のポイントは、作成を含む編集をDALレイヤーを超えて作成と編集の別々の部分に分割することが最も理にかなっている場合です。 明らかな例をルートとして示すことができます: 作成 - のhttpを:// someurl / somearea /編集/ 0 編集 - のhttp:// someurl / somearea /編集/ 254 対 作成 - のhttp:// someurl / somearea /作成 編集 - のhttp:// someurl / somearea /編集/ 254 これに関して確立された標準やベストプラクティスはありますか? 私はこれが小さな詳細であることを知っていますが、ロジスティック的に重要だと思います。

10
大きな変更を提案する/インターンとして書き直す[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 コンテキスト: それは内部プロジェクトです(多くの人が使用するとは思わない) 古いです 私たちはそれを更新しています 問題: mvcフレームワークを悪用します(モデルの使用、ビューでのビジネスロジックなど) 求められていることは小さいですが、凝集度が低いため、2つのオプションがあります。 物事をやり続ける 大量のコードを移動したり、コードを書き直したりする ソリューション(私が見る): 引き続き作業し、ベストプラクティスを無視して、すぐに行われ、リファクタリング/リライトによって新しいバグを導入しないことを支持する リファクタリング/書き換え 私の質問は本当にそうだと思います:このプロジェクトに大きな変更を加えたい場合、誰をin辱せずにそれを提案するにはどうすればよいですか?それとも、それが時々(比means的な)ダクトテープを意味していても、単純に流れに行く方が良いでしょうか?

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