ソフトウェア工学

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

3
Git:2つのブランチに影響するバグの修正
私はGitリポジトリを成功したGit分岐モデルに基づいており、この状況になったらどうなるのかと考えていました。 2つの機能ブランチAとBで開発しており、BにはAからのコードが必要であるとします。Xノードは機能AにブランチBに影響するエラーを導入しますが、機能AとBがマージされたノードYでは検出されず、テストは、再び分岐して次の反復に取り組む前に実施されました。 その結果、機能Bで作業している人々がノードZでバグを見つけました。この段階で、バグ修正が必要であると判断されました。この修正は両方の機能に適用する必要があります。これは、機能の一部であるため、機能Aで作業している人々もバグを修正する必要があるためです。 バグ修正ブランチを最新の機能Aノード(ノードYから分岐するノード)から作成し、機能Aとマージする必要がありますか?その後、両方の機能が再び開発にマージされ、分岐する前にテストされますか? この問題は、問題を解決するために両方のブランチをマージする必要があることです。フィーチャーBはフィーチャーAのコードに触れないため、修正を実装し、フィーチャーBブランチをマージせずにフィーチャーAの修正コードを保持することにより、ノードYの履歴を変更する方法はありますか? 軽度の関連:Gitバグの分岐規則
16 git  bug  branching 

10
アルゴリズムプログラミングのためのC上のPythonの優先
私は少しアルゴリズムを勉強していて、SPOJ.pl TopCoderなどのサイトを見てきました。プログラマーは通常、ほとんどのアルゴリズムプログラミングコンテストでCまたはC ++を好むことがわかりました。 今、私は最近いくつかの問題を抱えています。私は少しのCとPythonの両方を知っています。コードを書き込もうとすると、ほとんどのアルゴリズムでCよりPythonを好むようです。CIでコードを書くために座るたびに、約15分後にあきらめます。これは面倒で、Pythonに移行する傾向があるためです。マトリックスポインターなどを渡すことは、無駄な時間の無駄であるように思われ、実際にアルゴリズム自体について考えるために利用できます。 今、私はCが非常に重要な言語であり、多くのプログラマーのパンとバターであ​​ることを多くの人々から知っています。 私が知りたかったのは、私のこのアプローチに欠点/結果/欠点などがあるかどうかでした。 これはPython対Cの議論ではありません。これは、使いやすさのためにCよりもPythonを好むというこの特定の慣行が、長期的には私や他のプログラマー/コンピューター科学者にどのように影響するかについての質問です。 私は、これらの言語を業界で使用したことのある人々から、および/または大規模なソフトウェア/ライブラリなどを開発したいのです。

4
アプリケーションは電力消費に大きな影響を及ぼしますか?
単一の汎用アプリケーションで、実行中のデバイスの電力消費に影響を与えることができるものはありますか? 個々のアプリケーションの最適化が一般的な方法で消費電力にどのように影響するかについてよく知らないのですが、アプリケーションを作成するさまざまなアプローチが実行中のデバイスの消費電力に影響するかどうかを誰かが説明できますか? つまり、機能的にまったく同じことを行い、さまざまな方法で記述された単一のプログラムがデバイスの電力消費に大きく影響するのではなく、デバイスの電力消費に大きく影響します。

1
型消去を実行する必要がなくなるようにJavaを改善するにはどうすればよいですか?
ジェネリック医薬品の公式のJavaチュートリアルでは、型消去を説明し、なぜそれがコンパイラに追加されました。 ジェネリック型がインスタンス化されると、コンパイラーは型消去と呼ばれる手法でこれらの型を変換します。コンパイラーは、クラスまたはメソッド内の型パラメーターと型引数に関連するすべての情報を削除するプロセスです。型消去により、ジェネリックを使用するJavaアプリケーションは、ジェネリックの前に作成されたJavaライブラリおよびアプリケーションとのバイナリ互換性を維持できます。 これはおそらく実用的なアプローチであるか、おそらく最も痛みの少ないアプローチでした。しかし、ジェネリックは業界全体で広くサポートされているので、型消去を必要としないために何ができるでしょうか?後方互換性を壊す必要なく実行可能ですか?それが実行可能であれば、実用的ですか? 上記の引用の最後の文は自己参照になりましたか?つまり、「型消去により、ジェネリックを使用するJavaアプリケーションは、型消去を実行するJavaバージョンで作成されたJavaライブラリおよびアプリケーションとのバイナリ互換性を維持できます。」
16 java  jvm 

7
イベント駆動型コードのメンテナンスを容易にする方法は?
イベントベースのコンポーネントを使用するとき、メンテナンス段階で苦痛を感じることがよくあります。 実行されたコードはすべて分割されているため、実行時に関与するすべてのコード部分を把握するのは非常に困難です。 これにより、誰かがいくつかの新しいイベントハンドラを追加したときに、微妙で困難なデバッグの問題が発生する可能性があります。 コメントから編集する:アプリケーション全体のイベントバスやハンドラーがアプリの他の部分にビジネスを委任するなど、オンボードのいくつかの優れたプラクティスを使用しても、多くのコードがあるためにコードが読みにくくなり始める瞬間があります多くの異なる場所から登録されたハンドラー(特にバスがある場合に当てはまります)。 その後、シーケンス図が複雑になり始め、何が起こっているのかを把握するのに時間がかかり、デバッグセッションが煩雑になります(ハンドラーの反復中のハンドラーマネージャーのブレークポイント、特に非同期ハンドラーとその上でのいくつかのフィルター処理で楽しい)。 /////////////// 例 サーバー上のデータを取得するサービスがあります。クライアントには、コールバックを使用してこのサービスを呼び出す基本コンポーネントがあります。コンポーネントのユーザーに拡張ポイントを提供し、異なるコンポーネント間のカップリングを回避するために、いくつかのイベントを発生させています。1つはクエリが送信される前、1つは回答が返されるとき、もう1つは失敗の場合です。コンポーネントのデフォルトの動作を提供する事前登録された基本的なハンドラーセットがあります。 コンポーネントのユーザー(および私たちもコンポーネントのユーザー)は、いくつかのハンドラーを追加して、動作に何らかの変更を加えることができます(クエリ、ログ、データ分析、データフィルタリング、データマッサージ、UIファンシーアニメーション、チェーン複数の順次クエリの変更) 、 なんでも)。そのため、一部のハンドラーは他のハンドラーの前後に実行する必要があり、それらはアプリケーションのさまざまなエントリポイントから登録されます。 しばらくすると、十数人以上のハンドラーが登録されることがあり、それを操作するのは退屈で危険です。 この設計は、継承の使用が完全に混乱し始めたために生まれました。イベントシステムは、コンポジットの種類がまだわからないような構成で使用されます。 例の終わり /////////////// だから私は他の人々がこの種のコードにどのように取り組んでいるのだろうと思っています。書き込み時と読み取り時の両方。 そのようなコードを苦労せずに記述および保守できる方法やツールはありますか?

8
「完璧なプログラマーの症候群」を破る方法[非公開]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 そう思うのはおそらく私だけではないでしょう。しかし、私は「完璧なプログラマーの症候群」と呼ぶ傾向があります。多くの人が言うのは完璧主義者と同じですが、この場合はプログラミングの領域です。ただし、プログラミングの領域は、このような症候群には少し問題があります。 プログラミングをしているときに、コードがきれいで、ほとんどのベストプラクティスに従う優れたコードであるという自信がない、または自信がないと感じたことはありますか?従うべき非常に多くのルールがあるので、どういうわけか圧倒されるような気がします。もちろん、私はプログラマーであり、プログラミングが大好きであるというルールに従うことを好まないというわけではありません。これを芸術と見なし、ルールに従う必要があります。しかし、私もそれが大好きです。私がしたいことを意味し、自分がやっていることが正しい方向に進んでいるという良い感覚を得るためにルールに従うのが大好きです。ベストプラクティスと優れたコードに関する。 多分それは組織の欠如ですか?たぶん、それは経験不足ですか?たぶん練習不足?たぶん、誰かが指摘できる何かが欠けているのでしょうか?どういうわけかその症候群を取り除く方法はありますか?

9
プログラマがCとC ++の違いを知らないのは一般的ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 インタビュー中に、CとC ++の違いを知っているかどうかを尋ねられました。 私はなぜそのような質問が求められているのだろうと思っていましたか?

9
コンストラクターまたはセッターメソッドを使用しますか?
私はActionクラスを持っているUIコードで作業しています、このようなもの- public class MyAction extends Action { public MyAction() { setText("My Action Text"); setToolTip("My Action Tool tip"); setImage("Some Image"); } } このActionクラスが作成されたとき、Actionクラスはカスタマイズできないと想定されていました(ある意味で、そのテキスト、ツールチップ、またはイメージはコードのどこでも変更されません)。現在、コード内の特定の場所でアクションテキストを変更する必要があります。そのため、ハードコーディングされたアクションテキストをコンストラクターから削除し、引数として受け入れるように同僚に提案しました。以下のこのコードのようなもの- public class MyAction extends Action { public MyAction(String actionText) { setText(actionText); setTooltip("My Action tool tip"); setImage("My Image"); } } ただし、setText()メソッドは基本クラスに属しているため、アクションインスタンスが作成された場所にアクションテキストを渡すために柔軟に使用できると考えています。そうすれば、既存のMyActionクラスを変更する必要はありません。したがって、彼のコードは次のようになります。 MyAction action = new MyAction(); //this creates action …

11
.NETのすべてのクラスがObjectクラスからグローバルに継承されるのはなぜですか?
フレームワークに「グローバルルートクラス」アプローチをもたらす利点は、私にとって非常に興味深いものです。簡単な言葉で言えば、.NETフレームワークは、すべてのクラスに適した一般的な機能を持つ1つのルートオブジェクトクラスを持つように設計されました。 今日、私たちは内部使用のための新しいフレームワーク(SAPプラットフォームの下のフレームワーク)を設計しており、私たちは全員2つのキャンプに分かれています。 私は「グローバルルート」キャンプにいます。そして、そのようなアプローチが優れた柔軟性と開発コストの削減をもたらす理由は、一般的な機能をこれ以上開発しないためです。 そのため、どのような理由で.NETアーキテクトがそのような方法でフレームワークを設計するのか、本当に知りたいと思っています。

3
「kill」コマンドはなぜそう呼ばれますか?
killコマンドを「kill」と呼ぶことにしたのはなぜですか? つまり、このユーティリティはプロセスの終了によく使用されますが、実際には任意のシグナルの送信に使用できます。 少し混乱していませんか?おそらく、いくつかの歴史的な理由があります。 man killこのコマンドがVersion 3 AT&T UNIXに登場したことは、私が知っていることすべてです。

3
アップキャスト/ダウンキャストとは何ですか?
ポリモーフィズムについて学ぶとき、あなたは一般的にこのようなものを見ます class Base { int prv_member; virtual void fn(){} } class Derived : Base { int more_data; virtual void fn(){} } アップキャストまたはダウンキャストとは何ですか?ある(Derived*)base_ptr;アップキャストまたはダウンキャストは? あなたは基地から離れてより具体的な何かに行くので、私はそれをアップキャストと呼びます。他の人々は、あなたが階層を下って、トップがルートである特定のものに行くので、それはダウンキャストであると私に言った。しかし、他の人々は私がそれを呼ぶものと呼ぶようです。 ベースptrを派生ptrに変換するとき、アップキャストまたはダウンキャストと呼ばれますか?そして、誰かが公式の情報源にリンクできるか、それがなぜそれを素晴らしいと呼んだのかを説明できるなら。

1
一部のオープンソースプロジェクトがプルリクエストを受け付けないのに、パッチファイルのみをメールで送信するのはなぜですか
一部のオープンソースプロジェクトがプルリクエストを受け付けないが、パッチファイルのみをメールで送信する必要があるのはなぜですか?例:Git githubまたは他の分散scmホスティングでコードを公開しますが。パッチファイルを送信することは、インタラクティブでも便利でもありません。パッチファイルは昔ながらの方法です。プルリクエストはインタラクティブです。他の人も議論するかもしれません。

3
コードメトリックとバグ密度を相関させる実験
誰かがコードメトリックス(SLOC、Cyclomatic Complexityなど)とオブジェクト指向アプリケーションのバグ密度を相関させる実験を行ったかどうか疑問に思っています。 私は相関関係を証明または反証するだけの実験を探しているのではなく、両方で実験を探しています。私はプロジェクトのバグ密度がいることを信じているよう特効薬を発見するつもりはないよ可能性がある特定のプロジェクトやチームのための1つまたは複数のメトリックに相関と相関がプロジェクト/チームの存続期間中に変更することができます。 私の目標は 興味深い指標をすべて2〜3か月間測定します(ソナーからはすでにかなりの数があります)。 新しいバグの数と相関する1つのメトリックを見つけます。 根本原因分析を行って、これがなぜ起こるのかを確認します(たとえば、特定の設計スキルが不足していますか?)。 いくつかの反復のスキルを向上させ、変化を測定します。 すすぎ、2から繰り返します。 これに関する経験はないが、このテーマに関する論文/ブログを見たことを覚えているなら、それを共有できれば幸いです。 これまでのところ、このテーマに関するいくつかの情報を含む次のリンクを見つけました バグは複雑なコードにありますか?-プレゼンテーションのスライドのみ。 変更点とバグ:開発アクティビティのマイニングと予測 -プレゼンテーションからスライドするだけです。要するに、依存関係が多いほど、バグが発生する可能性が高くなります(これは非常に一般的なルールだと思います)。 失敗は4文字の言葉です -バグとメトリックの相関関係に関するパラディ。

2
最新のC ++パラダイムの概要 [閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は8〜10年前にC ++を広範囲に記述していました。それ以来、専門的な理由でC#に移行しました。しかし、時々私は次のような声明を見ます 「まだポインタ参照を手動で追跡している場合は、間違っています」 または 「C ++は、RAIIのような最新のコンセプトを使用しており、回復中のC開発者のようにメモリを手動で割り当てない限り、完全に安全です。」 どちらも10年前の標準的な手順でした。最近、C ++がかなり改善されているのを見てきました。特にC ++ 0xには、いくつかの新しい機能があるようです。「C / old C ++」プログラマーが「最新」のC ++パターンとプラクティスに追いつくための最適なリソースは何ですか?

6
スクラムと継続的インテグレーションによるソフトウェア開発のための優れたワークフロー
私は、スクラム方式を使用したソフトウェア開発会社において、継続的インテグレーションワークフローがどのように適合するかをよりよく理解するためのアプローチを研究しています。 私はこのようなことを考えています: それは素晴らしいワークフローでしょうか?

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