ソフトウェア工学

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

1
プルメカニズムを使用したオブザーバーパターン
以下の実装について疑問に思っていました public void update(Observable obs, Object arg) 私はすべてのオブザーバーに送信し、notifyObserver()Iを使用して更新しthis、オブザーバーに参照を渡すとgetters、サブジェクトのを使用して、必要な情報をプルできます。 argupdateメソッドの引数は何のためのものですか?

5
HTML \ DOM仕様でハイパーリンクがAcceptヘッダーを設定できないのはなぜですか?
Acceptクライアントからのヘッダーの目的は、サーバーが要求への応答として受け入れるデータの種類を通知することです。このヘッダーは、JavaScriptの非同期HTTP呼び出しで設定できますが、HTMLでは設定できません。 たとえば、のようなリンクを考えてみましょう<a href="https://softwareengineering.stackexchange.com/some/resource">Get as CSV</a>。のような属性accept="text/csv"が許可されていて、ブラウザAccept: text/csvがそのリクエストと共にヘッダーを送信すると解釈した場合、サーバーはリクエストのセマンティクスに応答できます。それがなければ、などのリンクを作成する可能性が<a href="https://softwareengineering.stackexchange.com/some/resource?format=csv">Get as CSV</a>あり、サーバーは代わりに任意のクエリ文字列パラメーターに応答する必要があります。 Acceptマークアップによるヘッダーの設定を許可しないHTML \ DOM仕様の背後にある技術的および歴史的な理由は何ですか?

2
依存関係の逆転の原則:低レベルコンポーネントと高レベルコンポーネントの両方が抽象化にどのように依存するかを理解する
依存関係の逆転の原理について学習しています。それはそれを述べています: 高レベルのモジュールは、低レベルのモジュールに依存するべきではありません。どちらも抽象化に依存する必要があります。 しばらく、私はそれが高レベルのコンポーネントと低レベルのコンポーネントの両方が抽象に依存し、それらに依存していることの意味を理解しようとしました。 どちらも同じ抽象化に何らかの形で依存する必要があると思います。これが間違っている場合は修正してください。 私はこれが何を意味するかについていくつかの結論に達しています。これが正しいかどうか確認してください。 「高レベルのコンポーネントは抽象化に依存しています」-意味: 高レベルコンポーネントは、具体的な低レベルコンポーネントと直接通信するのではなく、低レベルコンポーネントと通信するためにインターフェースと通信します。低レベルのコンポーネントはこのインターフェースを実装します。 「低レベルのコンポーネントは抽象化に依存しています」-意味: 低レベルのコンポーネントは、インターフェースの観点から定義および設計されています。それらはインターフェイスに合うように設計されています。それらは、インターフェースがそれらの設計方法を定義する方法で、インターフェースに依存しています。(多くの場合、低レベルのクラスがそのインターフェースを実装しています)。 このように、高レベルのコンポーネントと低レベルのコンポーネントはどちらも「抽象化に依存」していますが、方法は異なります。 これはよく理解していますか?

1
ブール値を返すメソッドは、質問またはアサーションの後に名前を付ける必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 多くの命名規則では、ブール値を返すメソッド(述語メソッドとも呼ばれる)は、質問の後に名前を付けることを推奨しています。私の質問は、メソッドがアサーションにちなんで名付けられるべきだという意味ではないのか? わずかな違いかもしれませんが、場合によっては別の名前になります。 質問:is_pixel_transparent(...) アサーション:pixel_is_transparent(...) 時々、これは違いがなく、フレージングは​​同じです: 質問:end_of_file(...) アサーション:end_of_file(...) さらに、ほとんどの場合、人々が「質問」と呼ぶものは実際にはアサーションです。 key_exists(...)->これは問題ではありません。これは主張です。 使用例:if(key_exists(...))... array_contains_element(...)->これは問題ではありません。これはアサーションです。使用例:if(array_contains_element(...))... だから、質問を言い換えると、質問をするとき、誰もが主張を意味するのですか?

3
論理的結束とは何ですか?なぜそれが悪いまたは望ましくないのですか?
結合と凝集に関するc2wikiページから: 凝集度(モジュール内の相互依存性)強度/レベル名:(悪いものから良いものへ、高い凝集性が良い) 偶然の凝集度:(最悪)モジュール要素は無関係 論理的凝集度:要素は、外部モジュールから選択されたものと同様のアクティビティを実行します。つまり、実行する操作を選択するフラグによって実行されます(CommandObjectも参照)。つまり、関数の本体は1つの巨大なif-else / switch on operationフラグです 一時的な結束:実行される一般的な時間のみに関連する操作(すなわち、initialization()またはFatalErrorShutdown?()) 手続き的結束:それぞれが異なるデータにある、異なるが順次のアクティビティに関与する要素(通常、線形シーケンス境界に沿って複数のモジュールに簡単に分割できます) コミュニケーションの結束:同じデータまたは入力を必要とする以外は無関係な操作 シーケンシャル凝集:重要な順序での同じデータの操作。1つの関数の出力が次の関数に入力される(パイプライン) 情報のまとまり:モジュールはいくつかのアクションを実行します。各アクションには独自のエントリポイントがあり、アクションごとに独立したコードがあり、すべて同じデータ構造で実行されます。基本的に、抽象データ型の実装。つまり、sales_region_tableとその演算子の構造を定義します。init_table()、update_table()、print_table() 機能的結束:すべての要素が1つの明確に定義されたタスク、つまり1つの操作を実行する関数get_engine_temperature()、add_sales_tax()に貢献します (強調鉱山)。 私は論理的な結束の定義を完全に理解していません。私の質問は: 論理的な結束とは何ですか? なぜそんなにひどいラップ(2番目に悪い凝集力)になるのですか?

3
法的ライセンスで自分のユーザー名を使用できますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 オープンソースプロジェクトがありますが、ライセンスファイルで実名を使用したくありません。法的には、代わりにプロジェクトホスティングユーザー名を使用できますか? プログラマーは弁護士ではないことを知っていますが、同様の問題に対処した可能性のある人からのアドバイスを探しています。
10 licensing  law 

5
誰がスクラムのタスクを定義、割り当て、実装、および実行する必要がありますか?
スクラムでの役割は、プロダクトオーナー、スクラムマスター、およびスクラムチームです。ユーザーストーリーは、タスクと呼ばれる小さな部分に分解する必要もあります。タスクには、定義、割り当て、実装、フォローという4つのフェーズがあるようです。 タスクについてスクラムで誰が何をすべきか?タスクの残り時間を更新するのはスクラムマスターの責任ですか、それとも開発者(スクラムチーム)の責任ですか?開発者は自分にタスクを割り当てる必要がありますか、それとも製品の所有者が伴うスクラムマスターの責任ですか?


1
Macでコードを保存するのに最適な場所はどこですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私はいくつかのMac開発をいじり始めて、コードを保存するのに最適な場所はどこにあるのだろうと思いますか? 通常、私のWindowsボックスでは、すべてのコードをc:\ Code \に保存します。 Macでは/ Users / Liam / Code /にあります これにより、Webコードの実行時に権限に関する問題が発生しますか?
10 mac 

3
この可能なL1キャッシュ書き込み最適化を実行するCPUはありますか?
L1キャッシュを備えたCPUが書き込みを行うと、通常、(データの更新に加えて)書き込み先のキャッシュラインがすでにL1キャッシュにあると想定して、キャッシュがそのキャッシュラインをダーティとしてマークします。 、後で更新されたデータを含む行を書き出します。 可能な最適化の1つは、キャッシュに書き込みの内容と以前のキャッシュの内容を比較させ、それらが同じである場合、その行をダーティとしてマークしないことです。これにより、キャッシュでライトバックを回避できる場合があるため、CPU製造元がこのロジックを実行するために必要なゲートに値するものとして、これをどのように認識しているかを確認できます。 私の質問:この最適化を実行するCPUはありますか? なぜ私が尋ねているのかについての背景:一定のメモリアクセスを必要とするいくつかのコードを書いています。つまり、キャッシュの動作を聞くことができる人は、私がしていることを推測できないはずです。私のアクセスの一部は書き込みであり、このコードを実装する明白な方法では、書き込みの多くは、すでに存在するものと同じデータを書き込みます。書き込みを行う必要があるのは、データによっては、書き込んでいるデータが同じである場合とそうでない場合があり、同じアクションを実行することが重要であるためです。CPUが「no-change-write」を実際に書き込まないことによって最適化する場合、それはキャッシュの動作が私がやっていることによって異なり、それが私の目標を覆すことになることを意味します。 それで、この方法で書き込みを最適化しようとするCPUはありますか?
9 caching  cpu 

1
非同期タスクが悪いUXを作るとき
私は、必死にそれを必要とするIDEを拡張するCOMアドインを書いています。関係する機能はたくさんありますが、この投稿のために2つに絞ってみましょう。 ユーザーがモジュールとそのメンバーをナビゲートできるツリービューを表示するコードエクスプローラーツールウィンドウがあります。 ユーザーがコードの問題をナビゲートして自動的に修正できるようにするdatagridviewを表示するコードインスペクションツールウィンドウがあります。 どちらのツールにも、開いているすべてのプロジェクトのすべてのコードを解析する非同期タスクを開始する「更新」ボタンがあります。コードエクスプローラは、構築するために、解析結果を使用してツリービューをし、コード検査は、コードの問題を発見し、その中で結果を表示する解析結果を使用するDataGridView。 ここで私がやろうとしているのは、機能間で解析結果を共有することです。これにより、コードエクスプローラーが更新されたときに、コードインスペクションがそれを認識し、コードエクスプローラーが行った解析作業をやり直すことなく更新できるようになります。。 それで私がやったことは、パーサークラスを、機能が登録できるイベントプロバイダーにしたことです。 private void _parser_ParseCompleted(object sender, ParseCompletedEventArgs e) { Control.Invoke((MethodInvoker) delegate { Control.SolutionTree.Nodes.Clear(); foreach (var result in e.ParseResults) { var node = new TreeNode(result.Project.Name); node.ImageKey = "Hourglass"; node.SelectedImageKey = node.ImageKey; AddProjectNodes(result, node); Control.SolutionTree.Nodes.Add(node); } Control.EnableRefresh(); }); } private void _parser_ParseStarted(object sender, ParseStartedEventArgs e) { Control.Invoke((MethodInvoker) delegate …

1
浮動小数点関数の暗黙の精度
別のプログラマの見直しながら、正規分布のCDFを計算する関数の実装を、私が作っ提案 Pythonの組み込み関数または使用scipyのダウンロード、共通の科学的なライブラリを実装全体を置き換えるのいずれかにします。 別のプログラマーは、彼らのドキュメンテーションにおいていかなる正確性の保証math.erfc()もscipy.stats.norm.cdf()提供もしないことを指摘しました。したがって、(尊重されたソースから取得され、エラー範囲が文書化されていた)近似アルゴリズムの置き換えについては、さらに注意する必要があります。 正直なところ、組み込み関数やライブラリー関数の正確さと正確さを疑うという考えは、私の心を超えたことはありませんでした。結局、私のような機能を呼び出してきたsin()し、sqrt()あまり考えず年間のを-なぜ必要がありますmath.erf()またはscipy.stats.norm.cdf()任意の異なること? しかし、今、私は心配しています。私の質問は: 一般的に、ドキュメントで特別な言及がない場合、これらの種類の関数は、IEEE倍精度浮動小数点で提供される精度の範囲内で、小数点以下の最後まで完全に正確であることを意味しますか? Python math.erf()やSciPy scipy.stats.norm.cdf()は特にそうですか?どうしてわかりますか? このmanページはsin()言う… これらの関数は、引数がpiの倍数に近いか、0.0から離れていると、精度が低下する可能性があります。 サイン関数が周期的で対称であるのに、なぜこのような警告が存在するのでしょうか?最適な精度を得るには、入力を正規化するための呼び出し側に負担がかかるようです。 一方、MozillaのドキュメントでMath.sin()は、正確さや正確さについては何も述べられていません。それはそれが完全に正確であることを意味しますか、それともMath.sin()他の場所のように、JavaScriptの特定の状況でのみ正確であることは「共通の知識」ですか?

13
履歴書、CVにはいくつのスキルを記載する必要がありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 私は保守プログラマーであり、毎日ではなく毎月、かなり多くのテクノロジのリストを使用しています。たとえば、私は以下の言語に堪能です(明らかに専門家ではありません)。 Java(J2EEを含む) C# VB6 ASPクラシック 履歴書を作成するとき、いくつのテクノロジーをリストアップする必要がありますか?それらすべてをリストすることは無意味であるか、あるいは問題でさえあるようです。履歴書を読むときにテクノロジーの膨大なリストを読むのは好きではありません。いくつリストし、どのように選択すればよいですか?
9 resume 

3
Clang / LLVMはプライムタイムの準備ができていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 Clangはgccの代わりに使用できますか?その上であなたの経験は何ですか?まだどのような欠点がありますか? コンパイルのパフォーマンスはgccよりも非常に優れていますが、実行時に生成されるコードのパフォーマンスについてはどうでしょうか。 LinuxまたはWindowsで実行するためのフロントエンド(IDE)として優れたツールはありますか? 編集:私はCコンパイラを意味します。C ++はまだあまり良くありません。

5
ドロップダウンラベルでByRefとByValを参照するにはどうすればよいですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 MSDNのページのByRefやByValキーワードは非常に有用ではありません。なんとかスキップしない限り、どこでも単に「キーワード」と呼ばれています。 主な要因の一つRubberduckのプロジェクトは非常にクールに取り組んでいるカプセル化フィールドのリファクタリングを、と私はのドロップダウン上記のラベルに問題が持っている以外UIはかなりきれい..沿って来ているByRef/ ByVal「アクセシビリティ」と言う、と。 私は他の場所でそれを使用しているので、私は「アクセシビリティ」好きではないPublic/ Private/ Friendそれは、より正確な感じアクセス修飾子。 IMOは「アクセス修飾子」の略なので、「修飾子」を使用したくありません。 そのラベルを正確にしたいのですが、語彙が不足しているようで、これらのキーワードを何と呼ぶべきかわかりません。 正確に言うと、このラベルは何を言うべきですか?私が探している言葉は何ですか?「キーワードの家族は」何をByRef/ ByValに属し?
9 naming  ui  vba 

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