ソフトウェア工学

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

6
バグや欠陥のないポリシーでアジャイルを保つ
このプロジェクトでは、ゼロバグ(別名ゼロディフェクト)方法論で作業します。基本的な考え方は、バグは常に機能よりも優先度が高いということです。ストーリーの作成中にバグがある場合は、ストーリーを承認するために解決する必要があります。古いストーリーのスプリント中にバグが見つかった場合は、バックログに次に配置して解決する必要があります-最優先事項。 私が解決と言っている理由は、バグを常に修正するとは限らないからです。それほど重要ではないので、「修正しない」と宣言することもあります。全体的に素晴らしいですね。私たちは高品質の製品を出荷しており、巨大なバグのバックログの形で「こぶ」を運んでいません。 しかし、このアプローチが正しいかどうかはわかりません。深刻なバグをできるだけ早く修正する必要があり、重要ではないバグを破棄する必要があることに同意する傾向があります。しかし、重要ではあるが新機能ほど重要ではないバグはどうでしょうか?それらは適切な優先順位でバックログにファイルされるべきだと思う傾向があります。 より明確にするために例を挙げます-私のプロジェクトでは、flexで書かれたUIを使用します。すべての画面解像度で同じサイズで開くウィザード画面があります。ウィザードウィンドウを拡張すると、ページの1つが見栄えがよくないことがわかりました(ウィザードはすべてを表示でき、スクロールバーを必要としないにもかかわらず、消えない垂直スクロールバーがあります)。このバグは見苦しいと思います。修正する必要があると確信しています。しかし、私たちは厳しいスケジュールにあり、多くの機能を備えているので、カットを加えてリリースすることはできないと考えています。私たちはそのようなバグに耐えることができると感じています。修正する必要はありますが、他の機能よりも優先度が低くなります(したがって、完了できない場合は、少なくとも重要な機能を除外しませんでした)。だが、 「修正できない」とマークしたくないが、最も重要ではないバグに対処する方法について意見を聞きたいと思います。
18 agile  scrum  bug  backlog 

1
ガベージコレクターがヒープ内のオブジェクトを圧縮すると、スタック上の参照が変更されますか?
これは単純な質問のように思えますが、このテーマについて多くのことを読んだ後でも、決定的な答えは見つかりませんでした(おそらくそれはとても単純だからです)。 私の質問はこれです:ガベージコレクターがヒープ内のオブジェクトを圧縮すると、スタック内のオブジェクトへの参照はどのように更新されますか?私は2つの可能な解決策を考えることができます: スタック(およびヒープ内の参照)を調べて、オブジェクトの新しい場所を指すように参照を更新します。引っ越しに例えると、これはあなたの住所を持っている人に手紙を送り、新しい住所で住所録を更新するように頼むようなものです。 何らかのルックアップテーブルを提供します。これは、ローカルの郵便局に転送先を残すようなものです。 ガベージコレクターは主にこれら2つの方法のいずれかを使用しますか?他の方法?どちらも?

4
「フロントエンド」という用語は「クライアント側」と同義ですか?もしそうなら、これは常にそうですか?
比較的新しい(独学)Web開発者として、フロントエンド、クライアントサイド、バックエンド、サーバーサイドという用語をよく耳にします。私にとって、フロントエンドとバックエンドは、それぞれクライアント側とサーバー側の同義語でした。 ただし、CodeIgniterのようなMVCフレームワークで作業を開始すると、基本的にエンドユーザーが参照するもの(サーバー側コードを含む)を参照するフロントエンドのインスタンスに遭遇しました。エンドユーザーには表示されません(CMSを含む)。私にとって、クライアント側とサーバー側の意味ははるかに具体的です。それらは非常に明確な線で区切られています。一方、フロントエンドとバックエンドはそうではありません。 他のWeb開発者との会話の中で、彼はCodeIgniter(全体)をフロントエンドと呼んでいましたが、これがループを引き起こしました。私は彼を修正してCodeIgniterが私のバックエンドであると言うのか、それとも2つの用語の定義が完全に間違っているのかを確信できませんでした。 フロントエンドとバックエンドの定義を検索すると、いくつかの点で少し混乱しましたが、いくつかの点が明確になりました。これら4つの用語の間に線が引かれている場所と、Web開発のコンテキスト(具体的にはLAMPスタック)でそれらがどのように結び付いているかを知りたいだけです。

4
GitサブモジュールとGitクローン
私はGitHubでオープンソースプロジェクトに取り組んでいます。 サブディレクトリ/ Vendorがあり、その中にいくつかの外部ライブラリのコピーがあります。プロジェクトの元のメンテナーは、このディレクトリを外部ライブラリの新しいコピーで時々更新しました。 1人の開発者が、このコピーをgit submoduleに置き換えるというアイデアのあるプルリクエストを送ってきました。 そして、それが良いアイデアかどうかを検討しています。 Gitサブモジュールの長所: サブモジュールは、同様のシナリオ用に特別に設計されました 次の更新中に上書きされるベンダーへの偶発的なコミットの可能性を削除します Gitサブモジュールの短所: gitサブモジュールがメンテナーからプロジェクトをクローン/プルする人に複雑さを押し付けているようです(クローンを作成してプロジェクトの作業を開始するには、追加の手順が必要です: "git submodule init"、 "git submodule update" これについてはどう思いますか? もう一つ。この問題は、外部依存関係が非常に限られているかなり小さなサイズのライブラリです。今のところ、どんなビルドツールでもやり過ぎだと思います。
18 git  github 

3
なぜ5人の食事哲学者なのか?
私はなぜ食事哲学者の問題が5人の哲学者の事例に基づいているのかと思っていました。なぜ4つではないのですか? 私たちは4人の思想家を与えられたときにも5人の哲学者の例を議論するときに発生する可能性があるすべての不快な問題を観察できると思います。それは歴史的な理由だけですか?

8
なぜ本は「コンパイラがメモリ内の変数にスペースを割り当てる」と言っているのですか?
なぜ本は「コンパイラがメモリ内の変数にスペースを割り当てる」と言うのでしょうか。それを実行する実行可能ファイルではありませんか?たとえば、次のプログラムを書くと、 #include <iostream> using namespace std; int main() { int foo; return 0; } コンパイルし、実行可能ファイル(program.exeにします)を取得します。program.exeを実行すると、この実行可能ファイル自体が変数fooにスペースを割り当てるようにコマンドを実行します。しませんか?本が「コンパイラがこれを行う...そうする」と言い続ける理由を説明してください。
18 c++ 

6
距離に関係しないコストを最小限に抑えながら、数直線上のポイントを訪れる
このACM ICPCの問題について、助けが必要です。私の現在の考えは、これを最短経路問題としてモデル化することであり、これは問題ステートメントの下で説明されています。 問題 あるN = 1000において1-Dの数直線に沿って位置する核廃棄物容器の別個の位置は-500,000 to 500,000、を除いx=0。人は、すべてのごみ箱を集める仕事をします。廃棄物容器が収集されない秒ごとに、1単位の放射線を放出します。人は1秒ごとにユニットx = 0を移動でき1、ごみの収集にかかる時間はごくわずかです。すべてのコンテナを収集している間に放出される放射線の最小量を見つけたい。 サンプル入力: 4にあるコンテナ[-12, -2, 3, 7]。 これらのコンテナを収集するのに最適な順序は[-2, 3, 7, -12]、50ユニットの最小排出量です。説明:人は-22秒後に行き、その時間の間2 unitsに放射線が放出されます。その後、彼は3(距離:)に移動し5、バレルが2 + 5 = 7放射単位を放出した。彼はその銃身がユニットを放出4したx = 7場所に到達するまでにさらに数秒かかります2 + 5 + 4 = 11。彼はそのバレルがユニットを放出19したx = -12場所に到達するのに数秒かかります2 + 5 + 4 + 19 = 30。2 + 7 + 11 + 30 = 50、これが答えです。 …
18 algorithms  graph 

3
ウェブサイトのワークフローを設計する方法は?
私は、最適な答えに達することなく、これについて本当に長い間考えてきました。 まず第一に、私はプログラミングを愛する医師ですが、家庭学習と何年もの間自由な時間にコードをいじる以外は、実際に勉強したことはありません。 現在、私は自分のクリニックを管理するための小さなプロジェクトを構築しようとしています。それを行うために、私ができるようにしたいオプションのリストを作成することから始めました。 例: アクティブな患者記録。 さまざまな役割による認証(例:patient、nurse、dr) 予定表(予定表に予定の予防接種/手術などを含む) 医師が独自のプラグインを作成できるようにします。 医師が統計を表示するためのダッシュボード それから、codeigniter / mysql / php / jqueryでコーディングを開始しました。 開発中の私のステップ:- 最初のデータベース。 まず、必要なすべてのテーブルを作成しました。 これらのテーブルを処理するためにすべてのモデルを作成しました(テーブルの関係も考慮しながら、基本的な読み取り/書き込み/更新/検証を処理する1つのマスターモデル その後、ビューとコントローラーのコーディングを開始します。最初にビューHTMLを作成してから、このビューを処理するコントローラーを作成し、ビューの相互作用を機能させるためのコーディング関数を開始しました。 予約ビューをコーディングする場合の例(controller booking.php): ユーザーがクリックすると、このレイアウトが作成され、テーブルtdがクリック可能になります:jquery get(booking / add_patient_form)and pop up ユーザーが保存するとき:予約/保存に投稿-予定を保存してからindex()関数を再読み込みします など。そして、ビュー全体とプロジェクト全体を達成するために、このビューに必要なすべてのロジックを含むビューとそのコントローラーを作成する同じステップを続けました。 最後にすべてのターゲット機能が正常に機能しましたが、最初から計画がなく、プロジェクト全体がこれまでに何の計画もなくブレインストーミングとデバッグのパンチであったため、このプロジェクトに行った後、保守性と柔軟性にこだわっています!そしてそれらを一緒にリンクすることはできません。 私は、ウェブサイトのすべてのページが他のページから完全に分離されていると感じています。各ページがどのように読み込まれ、どの機能が内部にあるのかを覗き見ることさえ思い出せません! とにかくこれを回復してデザインを出すことができますか?

3
オブジェクト指向データベースがリレーショナルデータベースと同じくらい使用されないのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 多くのリレーショナルデータベース管理システム(RDBMS)に遭遇しました。しかし最近、休止状態を使用したため、オブジェクト指向データベースの方が人気がないのではないかと思い始めました。 JavaやC#などのオブジェクト指向言語が非常に人気がある場合、オブジェクト指向データベース管理システム(OODBMS)も人気がないのはなぜですか?

3
分岐は継続的な統合を中断しますか?
この記事「成功したGit分岐モデル」は、経験豊富なDVCSユーザーの間で非常によく知られていると思います。 私はhg主に使用しますが、この議論はどのDVCSでも問題ないと主張します。 現在のワークフローは、各開発者がマスターリポジトリのクローンを作成することです。独自のローカルリポジトリにコードを記述し、テストを実行し、すべてがうまくいけばマスターにプッシュします。 そこで、JenkinsのようなCIサーバーをセットアップし、将来のプロビジョニングシステム(シェフ、パペット、アンシブルなど)でワークフローを改善したいと考えています。 実部 さて、上記のモデルはうまく機能しますが、ブランチはCIを壊す可能性があります。機能ブランチは、developmentCIとマージをスムーズにするために、オリジンと同期する必要があります(記事によると、ブランチになります)。 アリスとボブが2つの機能に取り組んでいると言います。しかし、アリスは翌日に行われます。ボブの機能には1週間かかります。Bobが完了するまでに、彼の変更は古くなっています(おそらく、Aliceは一部のクラスをリファクタリング/名前変更しています)。 1つの解決策は、毎朝、開発者がプルmaster/originして、変更があるかどうかを確認する必要があることです。Aliceがコミットした場合、Bobは自分のワークスペースにプルしてマージし、機能ブランチが最新になるようにします。 これは良い方法ですか? これらのブランチは(ローカルクローンではなく)マスターリポジトリに存在する必要がありますか?つまり、すべての開発者がGitHub / Bitbucketのマスターリポジトリにコミット権限を与えて、新しいブランチを作成できるようにする必要がありますか?または、これはローカルで行われますか? 最後に、記事が提示するモデルは、ブランチがと同期していない場合、CIを破壊する必要がありorigin/masterます。ナイトリービルドを実行したいので、開発者は仕事を離れる前にプルしてマージし、各機能ブランチでもCIを実行する必要がありますか?

3
最も速い関数型言語
私は最近、特にHaskellとF#の関数型プログラミングを掘り下げてきました。いくつかのグーグルを回った後、より顕著な関数型言語(Scala、F#など)のベンチマーク比較を見つけることができませんでした。 一部の言語はハイブリッドであるため、必ずしも公平ではないことを知っています(Scalaが思い浮かびます)が、どの操作と全体でどのパフォーマンスが優れているかを知りたいだけです。

3
圧力がかかっているときにソリューションにジャンプしないようにする方法は?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 特に厳しいプログラミング期限(1時間など)にあるとき、私がまったくパニックに陥った場合、私の傾向は実際の計画なしにコーディングに飛びつき、私が進むにつれてそれを理解することを望みます。十分な時間を与えられれば、これはうまくいく可能性がありますが、インタビューでは、まったく逆効果ではないとしても、かなり失敗しました。時計が時を刻む間、私はそこに座って考えるのがいつも快適ではありません。 チェックリストはありますか、またはコーディングを開始するのに十分なほど問題を理解したときに認識するテクニックはありますか?いくつかの実験をコード化してより多くのことを考えて設計し、後で全体的な設計を理解することが最も生産的ですか? ここに数学試験を受けるためのテクニックと口頭試験を受けるための別のリストがあります。プレッシャーのかかったプログラミング問題を処理するための同様のテクニックのリストはありますか? 回答:これは有効な答えだと思います:解決方法。私はそのリンクが解決策に向かって解決またはアプローチするためのステップへの答えとして見つけました。でいくつかの本当に良いヒントもあった本当にインタビューの最善の戦略中に大声で考えているのは?。TDDの素晴らしく簡潔な議論は、TDDに対する最初の答えです。。

8
CでNULLのポインタをいつチェックする必要がありますか?
まとめ: Cの関数は、NULLポインターを間接参照していないことを常に確認する必要がありますか?そうでない場合、これらのチェックをスキップするのが適切ですか? 詳細: プログラミングのインタビューに関する本をいくつか読んでいますが、Cの関数引数の入力検証の適切な程度はどうなっているのでしょうか?明らかに、ユーザーから入力を受け取る関数は、NULL参照を解除する前にポインターをチェックするなど、検証を実行する必要があります。しかし、APIを介して公開することを期待しない同じファイル内の関数の場合はどうでしょうか? たとえば、gitのソースコードには次のように表示されます。 static unsigned short graph_get_current_column_color(const struct git_graph *graph) { if (!want_color(graph->revs->diffopt.use_color)) return column_colors_max; return graph->default_column_color; } 場合*graphであるNULLヌル・ポインタは、おそらくプログラムをクラッシュが、おそらく他のいくつかの予期しない動作が得られ、逆参照されます。一方、関数はstaticそうなので、プログラマーはすでに入力を検証しているかもしれません。Cで書かれたアプリケーションプログラムの短い例であるため、ランダムに選択しただけです。NULLをチェックせずにポインターが使用される場所は他にもたくさんあります。私の質問は、一般にこのコードセグメントに固有のものではありません。 例外処理の文脈の中で同様の質問があるのを見ました。ただし、CやC ++などの安全でない言語では、未処理の例外の自動エラー伝播はありません。 一方、オープンソースプロジェクト(上記の例など)では、使用する前にポインターのチェックを行わないコードがたくさん見られました。関数にチェックを入れるタイミングと、関数が正しい引数で呼び出されたと仮定するタイミングに関するガイドラインについて誰かが考えているかどうか疑問に思っています。 私は本番コードを書くためにこの質問全般に興味があります。しかし、私はプログラミングインタビューのコンテキストにも興味があります。たとえば、多くのアルゴリズムの教科書(CLRなど)は、エラーチェックなしで擬似コードでアルゴリズムを提示する傾向があります。ただし、これはアルゴリズムの中核を理解するのには適していますが、明らかにプログラミングの実践としては適切ではありません。そのため、(教科書のように)コード例を単純化するためにエラーチェックをスキップしていることをインタビュアーに伝えたくありません。しかし、私はまた、過度のエラーチェックを伴う非効率なコードを生成するようには見えません。たとえば、null graph_get_current_column_colorをチェックするように変更された可能性があり*graphますが、*graphnullである場合の動作は明確ではありません。
18 c  validation  null 

4
自動生成コード:「派生作品」?
たとえば、GPLソフトウェアを使用しています。私はこのGPLソフトウェアの著者です。このGPLソフトウェアには、コード間にDoxygenコメントがあります。これらのDoxygenコメントは、CC-BY-SAライセンスの下でプロジェクトWebサイトにこの生成されたドキュメントをアップロードするために、CC-BY-SA htmlページを生成するために書かれています。 しかし、Doxygenのドキュメント出力は「派生物」ですか?結局のところ、このドキュメントは私のGPLソースコードに基づいています。この場合、ドキュメントはGPLでなければなりません。しかし、ドキュメントであるため、ドキュメントはCC-BY-SAである必要があります。GFDLは役に立ちません。GPLコードをGFDLにすることはできません(その逆)。 この出力が本当に派生的な作品である場合、奇妙な状況になると思います。作品を配布する場合、受信者のユーザーは生成されたドキュメントを合法的に配布できないためです。 t、したがって、彼らは私が提供する同じライセンスで派生作品を配布する必要があります。 解決策は何ですか?

1
Python 3の新機能が解決する問題は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 Python 3の新機能は次のとおりです。 私たちは、よく知られている迷惑やいぼを修正し、多くの古い残骸を取り除きます 何が違うのか(修正)は言及されているが、なぜ(問題)は言及されていない。私は問題が何であるかを見つけていません。修正により解決される問題は何ですか?

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