ソフトウェア工学

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

7
スタックトレースは、ユーザーに表示されるエラーメッセージに含める必要がありますか?
私は職場で少し議論があり、誰が正しいのか、何が正しいのかを理解しようとしています。 コンテキスト:顧客が会計やその他のERPに使用するイントラネットWebアプリケーション。 (物事がクラッシュした場合)ユーザーに表示されるエラーメッセージには、スタックトレースなど、できるだけ多くの情報を含めるべきだと思います。もちろん、それはまず、「エラーが発生しました。開発者に以下の情報を送信してください」という大きなわかりやすい手紙で始める必要があります。 私の推論では、クラッシュしたアプリケーションのスクリーンショットがしばしば唯一の簡単に入手できる情報源になるということです。確かに、クライアントのシステム管理者の把握を試みたり、ログファイルの場所を説明したりすることができますが、それはおそらく遅くて苦痛です(ほとんどの場合、クライアントの担当者と話すのはそうです)。 また、すべての例外で必要なものを見つけるためにログファイルを探し回る必要のない開発では、即時かつ完全な情報を持つことが非常に役立ちます。(ただし、これは構成スイッチで解決できます。) 残念ながら、ある種の「セキュリティ監査」があり(ソースなしでどのように行われたかはわかりませんが...何でも)、彼らはセキュリティの脅威としてそれらを引用する完全な例外メッセージについて不平を言いました。当然、クライアント(私が知っている少なくとも1人)はこれを額面通りに受け取っており、現在はメッセージのクリーンアップを要求しています。 潜在的な攻撃者がスタックトレースを使用して、以前は理解できなかったものを把握する方法を理解できません。これまでにこれを行った人の例、証拠はありますか?私たちはこの愚かな考えと戦うべきだと思うが、おそらく私はここで愚か者だから... 誰が正しい?


4
なぜSQLのBETWEENはハーフオープンではなく包括的ですか?
セミオープン(またはハーフオープン、ハーフクローズ、ハーフバウンド)間隔([a,b)、x間隔iffに属するa <= x < b)は、多くの便利なプロパティがあるため、プログラミングではかなり一般的です。 誰もがSQL BETWEENが閉じた間隔([a,b])を使用する理由を説明する根拠を提供できますか?これは特にです。日付に不便。なぜBETWEENこんなふうに振る舞うのでしょうか?
45 sql 

7
ソフトウェアのテスト方法は欠陥のあるデータに依存していますか?
ソフトウェアエンジニアリングでは、バグを修正するコストが、バグが発見された後の開発で指数関数的に増加することはよく知られています。これは、Code Completeで公開され、他の多くの出版物で採用されているデータによってサポートされています。 ただし、このデータは存在しなかったことがわかります。Code Completeが引用したデータは、明らかにそのようなコスト/開発時間の相関関係を示しておらず、同様の公開された表は、いくつかの特殊なケースで相関関係を示しました。 これを裏付ける、または反論する独立したデータはありますか? そして、もし本当なら(つまり、発見された最近のバグのためにこの指数関数的に高いコストをサポートするデータがない場合)、これはソフトウェア開発方法論にどのように影響しますか?

14
プログラミング言語でエラーが「例外」と命名されているのに「エラー」と命名されていないのはなぜですか?
私は実際にかなり長い間それについて考えてきました。私は英語を母国語とする人ではありませんが、それでも何年もプログラミングの経験があり、常に私に尋ねました。なぜエラーとしてではなく例外として名前が付けられているのですか? のPageNotFoundError代わりになりPageNotFoundExceptionます。

16
プログラマーは、他の誰かの失敗したビルドを修正する必要がありますか?[閉まっている]
あるプログラマーはSVNリポジトリーにいくつかの作業をコミットしてから帰宅しました。彼が去った後、ハドソンの自動ビルドは失敗しました。別のプログラマーはこれを見て、コードの変更を調べた後、問題が1つのライブラリーがないことを検出しました。彼はこのライブラリをSVNに追加し、次のビルドが正常に完了しました。 2番目のプログラマーは正しいことをしましたか、それとも最初のプログラマーが問題を解決するまで待つべきでしたか?

7
組み込み開発の単体テスト時のベストプラクティス
組み込みシステム用に記述されたユニットテストコードのベストプラクティス戦略を探しています。組み込みシステムとは、デバイスドライバー、ISRハンドラーなどのコード、つまり金属に非常に近いものを意味します。 ICEを使用してハードウェアでテストしないと、ほとんどのユニットテストは不可能です。組み込みユニットは、機械式スイッチ、ステッピングモーター、電球などの他の刺激にも接続する必要がある場合があります。これは通常、手動で行われます。自動化は優れていますが、達成するのは難しく、費用がかかります。 更新 組み込みプロジェクトのテストで非常に成功していると思われるCテストフレームワークに出会いました。ハードウェアをモックするというアイデアを使用します。チェックアウトユニティ、CMockを、そしておそらくceedlingが。 2016年7月6日更新 出くわしたcmocka -より積極的に取り組んでいるように見えます。

5
これを64 KBに収めるにはどうすればよいですか?
だから、私は2011年のアセンブリでここにいて、このデモが再生されました:http : //www.youtube.com/watch?v= 69Xjc7eklxE& feature=player_embedded これは単一のファイルのみであり、ルールに記載されています。繰り返しますが、どのようにしてこれを非常に小さなファイルに収めましたか?
45 assembly 

14
独自のコードのテストを改善する方法
私は比較的新しいソフトウェア開発者であり、改善すべきと思うことの1つは、自分のコードをテストする能力です。新しい機能を開発するたびに、バグを見つけるために、考えられるすべてのパスをたどることは非常に困難です。私はすべてがうまくいく道をたどる傾向があります。これはプログラマーがよく知っている問題であることは知っていますが、現在の雇用主にはテスターがいないので、同僚はこれにかなり優れているようです。 私の組織では、テスト駆動開発もユニットテストも行っていません。それは私を大いに助けますが、これが変わる可能性は低いです。 これを克服するために私にできることは何ですか?独自のコードをテストするとき、どのアプローチを使用しますか?
45 testing 

8
職場でStack Overflowを提唱する方法[終了]
Stack Overflowを日常業務のリソースとして使用することについて、職場で短いプレゼンテーションを行うことを考えています。 これを行った経験は何ですか? 同僚にそれを伝えるのに有効なリソースだと思いますか、それともリソースとしてGoogleについて話すのに似ていますか? それを行うより良い方法はありますか? Stack Overflowの質問側に答えるのではなく、質問をすることに傾倒していました。 フォローアップとして。 もともと、私は質問を自分のケースに限定しすぎたくはありませんでした。私のプレゼンテーションは、わずか4分間の簡単なトークで、1時間かけてさまざまなグループに繰り返します。 Stack Overflowの講演の前に質問をして、プレゼンテーション中にそれを参照することがあります。うまくいけば、1時間の間にいくつかのアクティビティがあります。 また、すべての開発者ではないため、視聴者に適した他のStack Exchangeサイトについても簡単に説明します。スーパーユーザー、サーバーフォールト、プログラマーはうまく機能すると思います。 プレゼンテーションのスケジュールが変更されたため、今後2か月間はプレゼンテーションを行いませんが、更新方法を更新します。

19
チェックボックスのいずれかをクリックしたことの法的証明のためのスクリーンショットを作成しますか?
顧客の1人からリクエストを受け取りました。そのようなリクエストに出会ったことは一度もないので、どこから探すべきかさえわかりません。 私たちの顧客は大学のネットワークであり、私たちは彼らにサイトを構築しています。そのサイトでは、とりわけ、潜在的な申請者が大学の1つでの研究に関する詳細情報を得るために記入できるフォームになります。ユーザーがこのフォームに記入した後(電子メールや電話番号を含む)、関連する大学は関連する情報を連絡します。 さて、法律上の理由から、クライアントはこのフォームにチェックボックスがあり、これらの大学から販促資料を入手することに同意することを示すために潜在的な申請者がチェックすることも求めています。もちろんそれは問題ありません。しかし、ここにリクエストの奇妙な部分があります: 記入された各フォームの詳細は、信頼できる方法で保存する必要があります。どうやら、フォームの値をデータベース(ユーザーが同意したかどうかを示す列)に保存するだけでは不十分です。ユーザーがフォームを送信した後にDBが変更される可能性があるためです。クライアントは、他の大学ポータルが記入済みフォームのスクリーンショットを作成し、ユーザーの名前と日付を含む名前をファイルに付けるなど、簡単に見つけられる方法で専用フォルダーのどこかに保存すると主張していますと時間。 私の質問は次のとおりです。ユーザーが実際にフォームに記入したことを証明する方法としてスクリーンショットを使用したことを聞いたことがありますか?信頼できると考えられる他の方法はありますか?
45 legal  forms 

10
仕事後のプロジェクトを開始して維持する方法
私はフルタイムの開発者として働いています。しかし、私の職場では、使用できるテクノロジーとプログラミング言語が非常に制限されています。すべての作業はC ++で行われます。 C ++がその主導的地位を急速に失っている(あるいはすでに失っている)ことは明らかです。(私を怒らせないでください、私は長年のC ++の経験があり、この言語が大好きです、単に事実を述べているだけです)。Java / Androidプロジェクトと、C#で実装したいプロジェクトのアイデアがいくつかあります。これは、私が雇用市場の動向を常に把握するための方法だと考えており、最新の分野で次の仕事を見つけるのに役立つことを願っています。 だからここに問題があります: 私の通常の勤務時間は10〜11時間で、子供や家事を終えた後、疲れて考えるのに1〜2.5時間ほどかかります。その時点で、私はイライラし、自分の計画に固執することができないことに失望し、翌朝目を覚ましてすべてをやり直します。 週末はさらに数時間ありますが、目標を達成したい場合は明らかに何か違うことをする必要があります。 時間を有効に活用する方法はありますか?あなたの誰かが同様の問題を抱えていて、それをうまく解決しましたか?

9
JOINキーワードを使用するかどうか
次のSQLクエリは同じです。 SELECT column1, column2 FROM table1, table2 WHERE table1.id = table2.id; SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id; そして確かに、私が試したすべてのDBMSで同じクエリプランが得られます。 しかし、時々、一方が他方よりも間違いなく優れているという意見を読んだり聞いたりします。当然、これらの主張は説明によって実証されることはありません。 私が働いている場所では、2番目のバージョンは他の開発者の大多数に好まれているようです。そのため、驚きを最小限に抑えるために、このスタイルに向かう傾向もあります。しかし、私の心の中で、私は本当に最初のものを考えています(それが最初にそれを学んだ方法だからです)。 これらの形式の1つは、他の形式よりも客観的に優れていますか?そうでない場合、一方を他方よりも使用する理由は何でしょうか?
45 sql  coding-style 

17
将来の雇用主を徹底的に評価するにはどうすればよいですか?[閉まっている]
コードの匂い、テストの匂い、プロジェクトの匂いについてもよく耳にしますが、Joel Test以外の雇用主の「匂い」についての議論は聞いていません。不愉快な企業文化の匂いがする雇用主のために多くのフラストレーションを感じた後、私は積極的にもっと成熟した開発環境を探す時が来たと信じています。 私は就職の面接中に問題を特定することにより、獣医の雇用主を支援するために質問のリストを集め始め、追加のアイデアを探しています。雇用主はこのリストを簡単に修正して従業員を検査することもできると思いますが、インタビューの観点から答えてください。 一貫した答えが得られるかどうかを確認するために、複数の人々のこれらの質問の多くを尋ねることが重要だと思います。ほとんどの場合、質問を各セクションに質問順に並べようとしました。早期の質問に対する望ましくない回答は、しばしばフォローアップを意味のないものにします。 値 「よく書かれた」ソフトウェアとは何ですか? 優れた開発者にはどのような属性がありますか?マネージャーにも同じ質問です。あなたの最も大切な従業員/マネージャーは誰ですか、そしてなぜですか? 処理する 開発プロセスはありますか? どの程度厳密にそれに従いますか? 各プロジェクトに適用するプロセスの量をどのように決定しますか? 典型的なプロジェクトのライフサイクルを説明してください。そうでない場合は、次の質問をしてください。 ウォーターフォール/反復:事前要件収集にどのくらいの時間がかかりますか?先行設計? テスト中 テストの開発者(開発者または別のテストエンジニア) それらはいつ開発されますか? テストはいつ実行されますか? 実行にどれくらい時間がかかりますか? 良いテストとは何ですか? 十分なテストを行ったことをどのようにして知っていますか? テストされるコードの割合 レビュー レビュープロセスはどのようなものですか? レビューされるコードの割合は?設計? コード/デザインレビューア/レビュー対象者として参加する頻度はどれくらいですか? レビューに適用される基準は何ですか?基準はどこから来ますか? 改善 過去1年間に評価または展開した新しいツールとテクニックは何ですか? 過去1年間に従業員に提供されたトレーニングコースは何ですか?あなたの会社で最初の6か月間、私は何をしますか(もしあれば、どのような組織的なメンターシップ/トレーニングが検討されたかをヒンティングします) 過去1年間に開発プロセスにどのような変更が加えられましたか? 組織としての間違いからどのように改善し、学びますか?過去1年間であなたの組織の最大のミスは何でしたか? 最近、経営陣にどのようなフィードバックをしましたか?実装されましたか?そうでない場合、なぜですか? あなたの会社は「ベストプラクティス」をどのように使用していますか?どのようにして外部または内部からそれらを探し出し、どのように互いに共有しますか? 倫理 あなたまたはあなたの従業員が最近経験した倫理的問題について教えてください。 オープンソースソフトウェアを使用していますか?どのようなオープンソースの貢献をしましたか? フォローアップ このStack Overflowの質問で@ jim-leonardoが言ったことが気に入りました。 本当に自問すべきこと:「この人は私を募集して興味を持たせようとしているように見えますか?」これは最も重要な部分の1つだと思います。面接を受けているのはあなただけだという態度を取っているように見える場合、彼らはおそらくあなたを粗末に扱うでしょう。良い面接官は、候補者が自分自身を売るのに必要なだけポジションを売らなければならないと理解しています。 @SethPが追加されました: Glassdoor.comは、潜在的な雇用主を調査するための優れたWebサイトです。特定の企業がインタビューを実施する方法に関する情報が含まれています...

7
.NETプロパティ-プライベートセットまたは読み取り専用プロパティを使用しますか?
プロパティでプライベートセットを使用し、ReadOnlyプロパティにする場合はどのような状況ですか?以下の非常に単純な2つの例を考慮してください。 最初の例: Public Class Person Private _name As String Public Property Name As String Get Return _name End Get Private Set(ByVal value As String) _name = value End Set End Property Public Sub WorkOnName() Dim txtInfo As TextInfo = _ Threading.Thread.CurrentThread.CurrentCulture.TextInfo Me.Name = txtInfo.ToTitleCase(Me.Name) End Sub End Class // ---------- …
45 c#  .net  vb.net 

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