ソフトウェア工学

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

7
アプリケーションのCRUDレイヤーで単体テストを作成する場合、テストを独立させるにはどうすればよいですか?
そのため、ユニットテストはできる限り本で作成しようとしていますが、いくつかの単純な追加/削除メソッドをテストするときは面倒になります。 addメソッドの場合、基本的にダミーオブジェクトを作成して追加する必要があり、テストが成功した後、ダミーオブジェクトを削除する必要があります。 削除テストでは、削除できるようにダミーオブジェクトを作成する必要があるのは明らかです。 1つのテストが失敗した場合にわかるように、他のテストも失敗します。どちらも必要なためです。 「注文をキャンセルする」というテストを書く必要があるシステムでも同じです...最初にキャンセルするにはダミーの注文が必要になりますが、これは単体テストのガイドラインに反しませんか? このようなケースはどのように処理されるのですか?

2
コードレビュープロセスの有効性を判断する方法
組織内にコードレビュープロセスを導入しましたが、うまく機能しているようです。しかし、時間の経過とともにプロセスの有効性を測定できるようにしたいと思います。つまり、コードがクリーンであるためにバグを見つけられないのですか、それとも人々がバグを拾っていないのでしょうか。 現在、効果的な完全自動化されたテストプロセスはありません。私たちは主に手動テストを採用しているため、この段階で見つかった欠陥に頼ってコードレビュープロセスが機能していることを確認することはできません。 誰もこの問題に出くわしたことがありますか、コードレビューの測定で何がうまくいくのかについて考えたことはありますか?

4
ベンチマークデータベース
db 'x'のパフォーマンス、または 'x'から 'y'に移行するとサイトのパフォーマンスが向上するという議論が飛び交っています。 さまざまな種類のデータベース間で機能する適切なベンチマークをまだ見ていません。 リレーショナル、ドキュメント指向など、複数のDBタイプで使用できる意味のあるベンチマークを作成することは可能ですか? そのようなベンチマークをどのように設計しますか?


8
さまざまな言語実装にUnicode識別子のサポートを追加する意味は何ですか?
個人的には、Unicode識別子に満ちたコードを読むのは紛らわしいと感じています。私の意見では、それはまた、コードが簡単に維持されることを防ぎます。さまざまな翻訳者の作成者がそのようなサポートを実装するために必要なすべての努力は言うまでもありません。また、Unicode識別子のサポートの欠如(または存在)が、さまざまな言語実装の(不利な)利点(本当に重要なように)のリストに絶えず気づいています。わかりません。なぜそんなに注目されているのですか?
14 unicode 

4
従来の手動テストを使用できるのにphpunitを使用する理由
Webアプリを作成するときは、ブラウザで作業をテストして、エラーが表示されるかどうかを確認し、修正します。私は複雑なアプリケーションを作成しましたが、この方法でのテストは簡単で高速です。私はyoutubeでphpunitに関する多くのビデオを見ましたが、その目的を見つけることができません。このライブラリが便利なのはなぜですか?cakephpやzendのようなphp framworksにはphpunitがもっとありますか?コアphpだけのフレームワークは使用しません。phpunitは私にとって便利ですか?はいの場合、どのように? xdebugもありますが、関連するかどうかはわかりません。

1
組み込みシステムプロジェクトにSEアジア文字セットを含めるための絶対的な最小要件は何ですか?
私は、組み込みコンピュータシステムを製造する製品に統合し始めた会社で働いています。当社には非常に幅広い製品があり、それらは世界中に配布されています。さらに、システムにフラッシュされたファームウェアに応じて複数の目的に使用できる統合ボードをいくつか設計しました。このように、さまざまな製品のコンピューターハードウェアを再設計する必要はありません。特定の製品のニーズに合わせてファームウェアレイヤーを書き直すだけです。 これらのハードウェアの制限のため、ハードウェアの変更は議会の行為を取りますが、新しいソフトウェアの作成ははるかに簡単です。 当社の製品の1つには、以前に実装する必要がなかった新しい要件があります。これは、ユーザー入力テキストの必要性です。 現在、国際的なテキストをリソースに保存することができ、必要なフォント文字のみがビットマップ画像にコンパイルされています。これは、言語セット全体のごく一部しか使用していないため、中国語や日本語などの表意文字の言語を最小限のスペースに保存できることを意味します。 この新製品ではユーザーがテキストを入力する必要があるため、広範な文字セットを実装する必要があります。主にPC開発者として、私はASCII、Unicode、UTF-8などにかなり精通していますが、ボード上にFRAMが限られているため、これらの言語の完全な文字セットを実装することはできません。フォントデータを保存します。 私の経営陣は、表意文字の多い言語に使用できる最小限の文字セットがあることを望んでいます。日本語の発音記号(ひらがな?)があると思います。中国語、韓国語、ベトナム語などの言語にも同様の発音記号がありますか?その質問に対する答えは「絶対に、いいえ」であると確信していますが、質問する価値のある質問です。 経営陣は、一般的に使用されているすべての主要言語をカバーする約8,000文字の限られた文字セットのみを使用できるという「ソフト」要件を設定しています。これが不可能な場合は、限られたハードウェアリソースに基づいてニーズを満たすために、何らかの形の代替方法を探す必要があります。 この問題は以前に解決されていなければならないと確信しています。広範なフォントおよび文字エンコードシステムを必要とする一方で、このような制約内で作業した経験はありますか?もしそうなら、あなたはどんな知恵のナゲットを提供できますか?

6
インターフェイスの一部のみを実装する方法
OOPで開発する場合、変更できないライブラリによってインターフェイス/コントラクトが与えられることがあります。このインターフェイスをJと呼びましょう。 これで、このインターフェイスを実装するオブジェクトを消費するクラスAのオブジェクトができました。Inside Aインターフェイスの定義のほんの一部だけが必要です。オブジェクトクラスの一部はプロジェクト中に私が作成します(そのうちの1つをタイプDと呼びましょう)。したがって、インターフェイスJ内のすべての実装にオーバーヘッドがあります。 インターフェイスJの機能のサブセットを実装したいのですが、これまでのソリューションでは満足できません。 Jのあらゆる側面を実装し、「notImplementedExceptions」をスローすると、ユーザーにオブジェクトの情報が誤って通知されます。タイプDのオブジェクトはインターフェースJに準拠しているように見えますが、 J)オブジェクトの整合性に依存することはできません。 新しく定義されたインターフェイスを実装すると、インターフェイスJのみを実装するオブジェクトを使用できなくなりますが、インターフェイスJは自分のインターフェイスと完全に互換性があります。 カスタムオブジェクトにインターフェイスJを実装させると、この機能をすべて必要としないため、かなりのオーバーヘッドが発生します。 インターフェースJを変更できた場合、インターフェースJの機能のこのサブセットを持つ「スーパーインターフェース」Kを作成し、インターフェースJをインターフェースKから継承させます。しかし、インターフェースJを変更することはできません。 この問題のオブジェクト指向ソリューションとは何ですか?最良のソリューションは、まだ「単なる」インターフェースJを実装していますか?または、インターフェイスを変更せずに「スーパークラス化」するOOPの方法はありますか?

6
C#関数パラメーターに使用する命名規則
Parameterで渡された名前が新しい型にキャストされる場合がありますが、渡されたオブジェクトの名前は同じままである必要があります。クラス属性の場合、この演算子を使用できますが、関数のローカル変数についてはどうでしょう。広く使用されているコーディング規約。 例、 void MyFunc(BaseClass myPara) { DerivedClass _mypara = (BaseClass)myPara; } またはそれどころか void MyFunc(BaseClass _myPara) { DerivedClass mypara = (BaseClass)_myPara; } または他の慣習
14 c#  naming 

4
優先度の分類を補完するためにバグの重大度を分類する方法は?
私の現在の仕事では、優先度が低、中、高のバグがあります。 優先度の低いバグは、出荷を停止したり、ユーザーに深刻な問題を引き起こしたりしない小さなエラーです。 中優先度のバグは、一部の内部ユーザーに問題を引き起こしますが、既知の回避策があります。 優先度の高いバグとは、お客様が目にする問題、データの破損、システムのクラッシュを引き起こす可能性のある問題です。 優先度の分類を補完するためにバグの重大度を分類する方法は?

6
ユニットテストケースはどのように作成しますか?
時には、他の開発者が書いたコードの単体テストケースを書くことになります。開発者が何をしようとしているか(ビジネスの部分)が本当にわからない場合があり、テストケースを操作して緑色の線を取得するだけです。これらのことは業界では普通ですか? 通常の傾向は何ですか?開発者は自分で書いたコードの単体テストケースを書くことになっていますか?

3
try / catchブロックをテストする例外を引き起こすイベントをシミュレートする方法は?
例外がどのように動作し、C#で例外をキャッチして処理する方法を理解していますが、例外が正しくキャッチされることを保証するために例外を引き起こす可能性のあるイベントをシミュレートするにはどうすればよいですか?たとえば、ネットワークの問題、データベースの問題などをシミュレートできるようなテストベッドのようなアプリケーションを実行できますか?例外はその性質上、再現するのが難しいように思われるため、コードで確実に対処できるようにすることは困難です。 私は主にC#/。NET / Visual Studioを使用して開発していますが、他の言語に関連する回答やリソースが役立つ場合があります。
14 c#  testing  exceptions 

5
アーキテクチャ(構造)指向と機能指向のプロジェクト構造
私が関与したプロジェクトには、アーキテクチャ指向のプロジェクトのファイル/フォルダー構造があります。 Root |____ Node1 |____ Event Handlers | |___ <all event handlers of project> |____ Events | |___ <all events of project> |____ Request Handlers | |___ <all request handlers of project> |____ Requests | |___ <all requests of project> |____ ... システムのアーキテクチャの観点から明らかです(開発チームによって提案されています)。 デザイナーチームによって提案された機能指向の構造です。 Root |____ Feature #1 |____ Event …

5
SqlConnectionsをDispose()しないことはどれほど悪いですか?
個人的には、usingステートメントにIDisposableを実装するADOオブジェクトを配置しないと、ハイブが発生します。しかし、私の現在の契約では、自社開発のエンタープライズフレームワークの「データアクセスプロバイダー」コードは、1)IDisposableを実装せず、2)使用するあらゆるものに対してDispose()をいつでも呼び出さないことがわかりました。ユーザーは、このフレームワークをデータアクセスに頻繁に使用するWinformsアプリケーションのパフォーマンスの問題について多くの不満を述べています。また、コードにはパフォーマンスに影響を与える可能性のある他の問題がたくさんありますが、他よりも垂れ下がった果物。 だから、「廃棄するのは理由があるのでそれを使う」といったことを言う以外に、これらの人々に、これが本当に、本当に悪いと納得させるように言うことができますか?

7
プロパティから例外をスローするのは悪い形ですか?
私は常に、プロパティ(つまり、設定/取得操作)が高速/即時であり、障害が発生しないことを念頭に置いてきました。プロパティを取得または設定することを試みる/キャッチする必要はありません。 しかし、いくつかのオブジェクトのプロパティにロールベースのセキュリティを適用するいくつかの方法を検討しています。たとえば、Employee.Salaryプロパティ。他の人が試したいくつかのソリューション(特に1つはここのAOPの例です)は、アクセサに適切な権限がない場合に例外をスローすることを伴います-しかし、これは私が持っていた個人的なルールに反します今長い間。 だから私は尋ねる:私は間違っていますか?状況は変わりましたか?プロパティが例外をスローできることは受け入れられていますか?
14 .net  exceptions 

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