ソフトウェア工学

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

6
プッシュの最終コミットが機能している限り、中間コミットが壊れていても大丈夫ですか?
関連: すべてのgitコミットはプロジェクトを動作状態のままにする必要がありますか? 次のコミットをローカルで行うと仮定します。 データベーススキーマを変更して、アプリケーションを破壊します。 データベーススキーマと再度互換性があるようにアプリケーションを更新します。 両方のコミットをプッシュする限りmaster、動作状態のままです。ただし、履歴バージョンは壊れています。 私はgit rebase -iコミットを一緒につぶすために使用できることを知っています。ただし、結果のコミットは大きくなり、説明が少なくなります。コミット履歴を検索して、何かを変更した理由を調べる必要がある場合は、元のコミットが自分が何をしたのか、そしてなぜなのかを示したいと思います。 私の質問は: masterで壊れた履歴コミットが原因で問題が発生した人はいますか? もしそうなら、個々のコミットメッセージと変更を破棄せずに、そのような困難を避ける簡単な方法はありますか?
13 git  dvcs 

3
コードでシンプルさを定義および測定するにはどうすればよいですか?
読みやすさに関するシンプルさに関する以前の質問には、コードのシンプルさの定義と理解が間違っている可能性が非常に高いことがわかりました。 コードでシンプルさを定義するにはどうすればよいですか?コードのシンプルさを測定するために、どのソフトウェア測定およびメトリックが利用可能ですか?

3
バグ追跡/問題追跡ソフトウェアを使用して、設計に関する質問、新しいツールなどについて話し合う
bugzilla、mantis、またはJIRAなどのバグ追跡/問題追跡ソフトウェアを、バグやタスクだけでなく、最終的に決定につながる議論を開始および維持するために使用した経験はありますか? たとえば、開発者は、すべての保護フィールドを廃止し、それらにアクセスする保護メソッドを持つプライベートフィールドに変更する必要があると考えています。それは彼の呼び出しではなく、彼はそれを議論したいと思います。通常、彼は次の開発者会議でポイントを持ち出し、最後に決定が下されます。代わりに、私の考えは、彼が特定のタイプの「決定」の問題を開き、通常はバグやタスクを説明するように彼の意図を説明することでした。 他の開発者は、自分がそう思うとコメントすることができ、最終的に、問題は「受け入れられた」または「拒否された」としてクローズされます。 私がこれで見る利点: 非同期通信:決定のすべての影響を監督する時間がまだないときに、会議で意見を述べることを強制される人はいません。 決定に至る考慮事項の記録されたログ。後でその質問を再度提起した場合、彼はそれを参照することができます。 他の問題との関係を作ることができます。たとえば、タスクをフォローして決定に戻ることができます。 コミットなどのバージョン管理ソフトウェアとの統合は、決定にまでさかのぼることができます。 短所: 金色のハンマーの激しい匂い:通常、問題追跡ソフトウェアは実用的なアイテムを追跡するために使用されます 組織のオーバーヘッドは不均衡な場合があります。小さな非公式の会話の代わりに、書面でアイデアを伝える必要があります。

3
補間検索とバイナリ検索
バイナリ検索の代わりに補間検索を使用する必要があるのはいつですか? たとえば、ソートされたデータセットがあります。どのような状況でバイナリ検索を使用してこのデータセット内のアイテムを検索しますか、またはどの状況で補間検索を使用する必要がありますか? データセットのどのプロパティが決定要因になりますか?
13 algorithms 

5
Javaはクロスプラットフォームゲームに適していますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 Javaでゲームを作成したいのですが、Windows、Linux、Macで動作するようにしたいと思います。これにはC#が悪い選択であり、CまたはC ++の十分な経験がないと確信しています。Flashから離れたい。したがって、Javaは私にとって良い選択ですか?ほとんどの場合、私はC#を使用しており、Javaも似ていると思うので、学習するのはそれほど難しくないと思います。しかし、それは十分速いですか?Javaよりも私のニーズに適した言語はありますか?

1
Acid3テストはどのくらい重要ですか、それを置き換えるものは何ですか?
長い間、ブラウザの最新の標準サポートのデフォルトガイドはAcid 3 Testでした。これをChrome 15.0、Firefox 7.0、Safari 5.1、IE 9.0のWindows 7(x64)で実行しました。すべてのスコアは100です。一部のアニメーションはよりスムーズになりますが、全体的にはそれほど違いはありません。 それから、html5test.comのスコアを見てみましたが、これははるかに幅広いバリエーションを示しています。 343/450:Chrome 15.0 298/450:Firefox 7.0 293/450:Safari 5.1 141/450:IE 9.0 ブラウザ機能のサポートに役立つ他のテストはありますか?HTML5テストの「最低」スコアとはどのような最低スコアですか? HTML5テストスコアはどれほど重要ですか?また、すべての新機能を実際に適切にテストできますか?Acid 3テストの代替品として適切ですか? 現在のブラウザーは、エンドユーザーが標準サポートのレベルを知らないままでいるのに十分に準拠していますか?

8
単一責任の原則-私はそれを過度に使用していますか?
参考-http://en.wikipedia.org/wiki/Single_responsibility_principle アプリケーションの1つのモジュールで元帳エントリを作成するテストシナリオがあります。実行できる3つの基本的なタスクがあります- 既存の元帳エントリを表形式で表示します。 [作成]ボタンを使用して新しい元帳エントリを作成します。 テーブルの元帳エントリ(最初のポインタで説明)をクリックして、次のページで詳細を表示します。このページの元帳エントリを無効にすることができます。 (各ページにはさらにいくつかの操作/検証がありますが、簡潔にするためにこれらに限定します) そこで、3つの異なるクラスを作成することにしました- LedgerLandingPage CreateNewLedgerEntryPage ViewLedgerEntryPage これらのクラスはそれらのページで実行できるサービスを提供し、Seleniumテストはこれらのクラスを使用して、アプリケーションを特定のアサーションを作成できる状態にします。 私が同僚と一緒にそれをレビューしていたとき、彼は圧倒され、すべてのために1つのクラスを作るように頼まれました。まだデザインがきれいだと感じていますが、単一責任の原則を使いすぎているのではないかと疑っています

4
「教育」のバックトラック[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 少し前に、プログラミングを始めることにしました。私は本当に、言語(Perl)に飛びついてそこから行きました。私が後悔しているのは、私がちょうど飛び込んだことです: 私は基本を学びませんでした(もしあなたがそれらを基本と呼ぶなら)。 コンピューターサイエンスについては知りませんでした。 この問題は、本当の可能性から私を遠ざけていると思います。どこから「再起動」する必要がありますか?読むべき本、記事などはありますか?経験豊富なプログラマーが知っておくべきトピックはありますか?あなたのアドバイスは何ですか?

4
Ruby、Python、PHPはSpringなしでどのように管理しますか?
エンタープライズJavaアプリケーションとWebサービスを職場で書いています(Spring、Hibernate、Maven、RESTEasy)およびPHP(CakePHP)とPython(Django)で、サイドプロジェクト用の。 SpringがもたらすInversion of ControlやAspect Oriented Programmingなどがもたらす価値はありますが、Javaスタックにない大規模なWebアプリケーションがSpringのようなフレームワークなしでどのように管理されるかはわかりません。 だから、開発者は、Springが排除するか、何か不足している密結合コンポーネントと他の不満を「我慢する」必要がありますか? Springに慣れていない人のために、最もよく使用する機能は次のとおりです。 コントロールコンテナの反転:アプリケーションコンポーネントの構成とJavaオブジェクトのライフサイクル管理、 アスペクト指向プログラミング:横断的なルーチンの実装を可能にし、 トランザクション管理:いくつかのトランザクション管理APIを統合し、Javaオブジェクトのトランザクションを調整します。

2
アクターモデルの説明は正しいですか?
私が理解した場合、アクターモデルはオブジェクトモデルに似ていますが、いくつかの違いがあります。 すべてのオブジェクトはそれ自身の独立したスレッドを生成し、数千のオブジェクトがある場合でも問題はありません。 アクターは、関数を呼び出して戻り値を取得することによって対話するのではなく、メッセージを送受信することによって対話します。 そのモデルに違反しない場合、アプリは競合状態のリスクなしに、最大限の同時実行を使用します。 オブジェクト指向でできることはすべて、アクターを使用して行うことができますが、問題は、ここ数年でコーディングしたすべてがオブジェクト指向に基づいていたということです-しかし、移行は差し迫っています。 したがって、たとえば、3Dベクトルクラス/アクターを定義し、2つのインスタンスを作成し、それらの和演算を呼び出す必要があるとします。 オブジェクト指向: class V3d { constructor V3d(x,y,z) //bla float x,y,z; function sum(V3d b) { return V3d(x+b.x,y+b.y,z+b.z); } } //using: mySum = V3d(1,2,3).sum(V3d(3,2,1)) //creates 2 instances, sum, returns instantly drawPoint(mySum) //uses the result 俳優モデル: actor V3d { constructor V3d(x,y,z) //bla float x,y,z; loop { receive 'sum',b:V3d …

5
エラーのチェックと処理を改善するにはどうすればよいですか?
最近、私は適切なチェック量と適切な方法とは何かを理解するのに苦労しています。 これに関していくつか質問があります。 エラー(不正な入力、不正な状態など)をチェックする適切な方法は何ですか?エラーを明示的にチェックするか、最終コードから最適化できるアサートなどの関数を使用する方が良いでしょうか?とにかくほとんどの状況で実行されるべきではない多くの余分なコードでプログラムを乱雑に明示的にチェックしたい気がします-そして、ほとんどのエラーは言うまでもなく打ち切り/終了の失敗に終わります。中止するために、明示的なチェックで関数を混乱させるのはなぜですか?私はアサートとエラーの明示的なチェックを探しましたが、どちらを行うべきかを本当に説明するものはほとんど見つかりませんでした。 ほとんどの人は、「アサートを使用して論理エラーをチェックし、明示的なチェックを使用して他の障害をチェックします」と言います。しかし、これは私たちをそれほど遠くに連れて行っていないようです。これが実現可能であると言えますか: Malloc returning null, check explictly API user inserting odd input for functions, use asserts これにより、エラーチェックが改善されますか?他に何ができますか?私は本当に、より良い「プロフェッショナルな」コードを改善し、書きたいと思っています。
13 c  testing  assertions 

12
私は面接の一部で失敗し続けていますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 そのため、ポートフォリオにはソフトウェア/サイトがいくつかあります。彼らはお金を稼ぐが、全体ではない。 そこで、主にJava / PHPのジュニア開発職に応募することで、仕事の経験を積むことにしました。 問題は、すべての技術的な質問に正しく答え、インタビューの最終段階である「テスト」のコーディングを行うことです。私は決してリラックスして物事を考えることができず、テストを非常にゆっくりと行うことになります。または、時々ブロックを打っただけで、自分の足で考えるのが非常に難しいと感じることがあります。 私が書いた他のものがはるかに複雑な問題を解決していたので、私はこれを理解していませんが、「テスト」は実際にパリンドロームを書いてテストするなどの残酷に単純です。 また、数学演算へのフローを使用してロジックテストを提供する場合もありますが、割り当てられた時間内に実行することはできません。 小額の収入を生み出し、問題を解決する方法を見つけることができる販売可能なソフトウェア/ウェブサイトを作成できることは知っていますが、インタビューでの簡単なコーディングテストでは非常に困難です。 助言がありますか?
13 interview 

2
「プロセスカナリア」とは
エリック・ブレヒナーの本「ハードコード」で、彼はこう述べています。 嘘は、あなたにトラブルを警告することができる少数の貴重なプロセスカナリアの一つです。 古い「カナリア」の周りで開発者が1〜2回トスを聞いたことがあります。それは何ですか? [Googleは私に答えなかった。おそらく、私のキーワードは不適切な選択でした。]

8
サポートの問題を考慮しながら、どのようにプロジェクトを現実的に計画できますか?
仕事で問題が発生しています。タイムスケールを評価し、期限を取得できるように、仕事をスケジュールしようとしています。 問題は、これから起こることをすべて知らずにプロジェクトを計画することが難しいことです。 たとえば、今は12月の初めまですべてのプロジェクトを計画していますが、その間にさまざまな社内および外部の会議、電話会議、余分な仕事があります。プロジェクトには3週間かかると言ってもいいですが、その間に1週間分の中断がある場合、完了日は1週間延期されます。 問題は3つあります。 プロジェクトをスケジュールするとき、時間スケールは文字通りに取られます。3週間と見積もった場合、期限は3週間に設定され、クライアントに通知され、延長の余地はありません。 中間作業などは、プロジェクトに取り組む生産的な時間を失うことを意味します。 仕事をするのに必要な時間がないクライアントもいるので、仕事に2か月かかると思っても、月末にプロジェクトを完了する必要があると言うことがあります。 -言うまでもなく、すでにやるべき仕事があります。 ガントチャートを使用して、所有しているすべてのプロジェクトとタイムシートに記入しようとしていますが、ガントチャートとはまったく比較されていません。このため、「まあ、このプロジェクトに3週間を予定していましたが、ここで1週間遅れているので、期限を1週間遅らせる必要があります。」 また、クライアントに伝えた期限を逃すことは専門的ではありません。 他の人はこのような状況にどのように対処しますか?プロジェクトの計画をどのように管理しますか?プロジェクト中に発生する非プロジェクト作業を考慮して、プロジェクトにどのくらいの「余分な」時間をスケジュールしますか?サポートの問題やバグなどにどのように対処しますか?計画中に説明できないことはありますか? 更新 たくさんの良い回答ありがとうございます。

14
学習してから5分後にプログラミングを思い出せませんか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 8年前に閉鎖されました。 私はJavaを学んでおり、素晴らしい教師を見つけました。彼はすべてを完璧に説明します。私はそれをすべて理解しています。私の問題は、「Nested Ifステートメント」や「多くのメソッドとインスタンス」などの短いセクションを学習した後、新しいセクションに進んだ後、5分ですべてを入力できることです。最後のセクションに慣れる)最後のセクションに入力するコードを忘れました。コードを思い出すために皆さんが使用するヒントやテクニックはありますか????
13 java  javascript 

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