ソフトウェア工学

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

4
匿名ユーザーにプライベートGitHubプロジェクトのバグを送信させるにはどうすればよいですか?
私たちの会社には、私が取り組んでいるプロジェクト用のプライベートGitHubリポジトリがあります。完全な夏の作業が終わった後、今週はローンチする予定です(wheee!)。ただし、GitHubで問題となるフォームにユーザーが記入できるフォームのどこかにつながる「バグを送信する」リンクをプログラムに含めたいと思います。グーグルで探しても解決策(または同じ問題を抱えている人)は見つかりませんでした。 これは可能ですか(おそらく一部のAPIを使用して?)、またはユーザーが報告したバグを手動で入力する必要がありますか?

8
同じロジックを実装する2つの言語で書かれたコードベースを維持する方法は何ですか?
2つの言語でコーディングする必要のあるロジック集約型のアルゴリズムがあります(実際には1つの言語で問題なく終了し、もう1つの言語でコーディングを開始しようとしています)。ロジック集約型とは、アルゴリズムが重要であり、注意深く理解する必要があり、さらに重要なことには、将来的にパッチを適用する必要のあるバグ(複雑さと不注意のため)が発生する可能性があることを意味します。 また、私はこのコードが手を変えるときに、最終的には新しいプログラマーを圧倒してはならないことを確認したいと思います。 このシナリオを前提として、コードベースを維持して同期を保つのに役立ついくつかの方法は何ですか?ソフトウェアツール、ベストプラクティスなどを意味します。 参考までに、2つの言語はC ++とJavaです。Androidを含む「その他すべて」のWindows / LinuxおよびJava用のC ++。

4
呼び出しスタックは下または上から始まりますか?
スタックは、ボトムアップで積み上げるものです。 したがって、スタックが空になりプログラムが終了するまで各関数が終了するため、関数が呼び出されたときにスタックから新しいアイテムが追加され、呼び出しスタックはスタックに新しいアイテムを追加します。 上記が正しい場合、なぜ人々はコールスタックを「上に」移動するコントロールを参照するのですか?確実に、制御は呼び出しスタックを下に移動します。
10 functions  stack 

7
ユーザーへのパスワードハッシュとサポート
私たちは最近、より良いパスワードストレージ戦略に移行しました。 パスワードはbCryptを通過した後に保存されます アカウントの作成時に、アドレスの所有権を確認するためのアクティベーションリンクがユーザーに送信されます セキュリティの質問なしにパスワードを忘れた場合、リンクがメールに送信されます。 リンクは24時間後に期限切れになり、その時点で新しいリンクをリクエストする必要があります。 アカウントがスタッフから作成された場合、ランダムな強力なパスワードが含まれたメールが送信されます。ユーザーのログイン時に、それを私たちが知らない何かにリセットする必要があり、それはbCryptされます。 現在、これは「ベストプラクティス」に準拠していますが、これを理解していない、ログインしたいだけの一般ユーザーからのサポートリクエストの量が大幅に増加しました。 私たちはしばしば不満を言うユーザーからリクエストを受けます: パスワードが間違っている(リセットする必要があるものから、末尾にスペースを付けてパスワードを貼り付けることが多い)。彼らは彼らが何を使っているかを私たちに伝えますが、私たちは彼らに実際のパスワードが何であるかを伝える方法がありません。 Googleから送信されたメールを受け取っていない(アクティベーション、リセットなど)とします。多くのトラブルシューティングの後、通常はメールにタイプミスがあること、彼らが正しいメールアカウントをチェックしていないこと、または単にスパムフォルダーに入っていることを発見した多くのトラブルシューティングの後、これはしばしばそうではありません。 もちろん、パスワードがないので試してみることはできません。失敗した試行をログに記録していますが、それらが使用したパスワードもクリアしています。これは、別のアカウントで使用されているパスワードである可能性が高く、プレーンテキストのログファイルに保存したくないためです。これは、彼らが問題を報告するときに彼らを助けるためにほとんど何も残しません。 ほとんどの人がこれらのような問題にどのように対処するかについて私は興味がありますか?

9
変数に型が必要なのはなぜですか?
だから私たちは書きます: Customer c = new Customer(); なぜ私たちが書いたようなデザインではないのですか? c = new Customer(); c.CreditLimit = 1000; コンパイラーは、顧客を指すcポイントを計算し、顧客のメンバーをcで呼び出すことを許可できますか? 私たちは書きたいと思うかもしれません: IPerson c = new Customer(); IPerson e = new Employee(); 書くことができるように: public string GetName(IPerson object) { return object.Name } string name = GetName(c); // or GetName(e); しかし、私たちが書いた場合: c = new Customer(); e = new …

2
コードコントラクト/アサート:重複チェックとは?
私はアサート、コントラクト、または私が使用している言語で利用可能なあらゆる種類のチェックを書くことの大ファンです。少し気になることの1つは、重複チェックを処理するための一般的な方法が何なのかがわからないことです。 状況例:最初に次の関数を記述します void DoSomething( object obj ) { Contract.Requires<ArgumentNullException>( obj != null ); //code using obj } その後数時間後、最初の関数を呼び出す別の関数を記述します。すべてがまだメモリ内にあるのでDoSomething、nullオブジェクトを既にチェックしていることがわかっているので、コントラクトを複製しないことにします。 void DoSomethingElse( object obj ) { //no Requires here: DoSomething will do that already DoSomething( obj ); //code using obj } 明らかな問題:objがnullでないことを確認するためにDoSomethingElse依存しDoSomethingています。したがってDoSomething、これ以上チェックしないことを決定する必要があります。または、別の関数を使用する場合、objはもうチェックされない可能性があります。結局、私はこの実装を書くことにつながります: void DoSomethingElse( object obj ) { Contract.Requires<ArgumentNullException>( obj != null …

13
プログラムが失敗しないことを保証できますか?
ここにシステムがあります。最近、システムによって生成されたレポートの数値の1つに誤った計算があります。私たちの経験では、このシステムで何年も問題やエラーに遭遇したことはありません。 このシステムの作成者はすでに行っているため、プログラムを追跡することはほとんどできません。しかし、入力データ、設定を確認し、それらが正しいことを確認しました。 今、私の質問は、論理的な理由なしにコンピュータプログラムが突然失敗するのでしょうか。サーバーマシンを叩くと、コンピューターが計算している数値の1つが別の数値になり、計算が間違ってしまいますか? 私はかなり狂っているという考えに同意しますが、知りたいのですが、問題がプログラムと入力ではなく、他のいくつかの要因によって引き起こされていることをどのようにして知ることができますか? PSこの狂ったシステムにはログがありません。
10 debugging 

7
Javaのequalsなどのよく理解されたメソッドのドキュメントを書く
equals、compareToなどの広く知られたメソッドにコメントを書くことは良い習慣ですか? 以下のコードを検討してください。 /** * This method compares the equality of the current object with the object of same type */ @Override public boolean equals(Object obj) { //code for equals } 私の会社は、上記のようなコメントを入力することに激怒しています。上記のJavadocコメントは必要ですか?equalsメソッドなど(compare、compareTo)などが何をするのかが明確でよく理解されていませんか? あなたの提案は何ですか?
10 java  comments 

5
TDDが設計に関するものである場合、なぜそれが必要なのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 TDDの第一人者は、TDDがテストではなく、デザインに関するものであることをますます伝えています。TDDなしで本当に素晴らしいデザインを作成する開発者を知っています。彼らはTDDを実践すべきでしょうか?
10 tdd 

3
マイナーなJVMアップグレードを行うことはどの程度安全ですか?
私は何年にもわたってJVMに取り組んできましたが、JVMのクラッシュを経験したことはほとんどありません...約6か月前までです。 それ以来、2つのJVM障害が原因で約5つのJVMクラッシュが発生しました。Oracleのソリューションは常に同じでした...アップグレード。 各アップグレードは常にポイントリリースとの間で行われます。つまり、Oracleの最新の提案(バグが修正されたことを確認した後)は、1.6u20から1.6u26にアップグレードすることでした。 JVMのマイナーバージョンをアップグレードする必要はありますか? これは膨大な量の回帰テストを必要とする大きなイベントですか、それとも受け入れるべき安全なアップグレードですか?
10 java  oracle  jvm  upgrade 

7
コードのリファクタリングと最適化は、アジャイルとウォーターフォールの両方のプロセスタイムラインのどこに適合させるべきですか?
プロジェクトマネジメントチームの間では、「機能する」とは100%完成したものと見なす必要があることを意味するというこの考え方があるようです。ほとんどのプログラマーは、常にそうであるとは限らないことを知っています。機能の一部を機能させるために別のアプローチを試みている場合、それは必ずしも最良の解決策を見つけたことを意味するわけではありません。私はよく何かをやり終えて、一歩下がって、ビジネスルールが満たされた後、自分に何ができるかを自問します。この「もっと上手にできる」時間は、タイムライン内のどこかに実際に収まるでしょうか。私は、最良のアプローチは、コードを見つけたときよりも常に(ある程度)そのままにしておくことであると考えています。これは、リリース後のリファクタリングを意味する可能性があります。しかしながら、

10
あなたの発明を取得するために雇用主に委任状を与える[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 あなたがプログラマーとして雇われている間にあなたが発明したものについて特許を取得することを保証するために、ソフトウェア会社が委任状を要求することは正常ですか? 更新: 私の場合、雇用主に戻りました。彼らは、会社のリソースを使用して、会社の時間中に発明されなかったドメインに関連しない私の発明を使用することに関心がないと私に言った。 同社はオープンソースへの貢献を奨励しており、その点で干渉することはありません。 私はさらに契約を検討し、「発明」という用語が法的スピーチで定義された時点で、この契約の文脈における発明は、会社の時間内に会社のリソースを使用して開発されたものだけであると述べました。 委任状により、会社は、特許を取得したい発明について、私の署名(または私の不在の場合は同等のもの)を確実に取得できるようになります。

6
ORMを使用するとどのような種類のWeb開発プロジェクトにメリットがありますか?
最初に、SQLを使用してデータベース作業の95%を完了したと言います。最近、NHibernateやDoctrineなどのさまざまなORMの調査を行いました。 多くのSQLと、ORMが提供するデータベースの移植性を知る必要がないことの利点がわかります。しかし、SQLを理解することでORMとの連携がより効果的になることもわかります。私のキャリアの中で、アプリケーションの最大の変更はデータベースベンダーになるとしか思えません。 私はSQLの作成に非常に慣れており、ORMを使用することでよく教えられる利点を実現していないようなので、ORMのヘビーユーザーへの私の質問は次のとおりです。 どのようなWeb開発プロジェクトがORMの使用から最も恩恵を受けますか?

13
大学にいる間、余暇にプログラムをしないのは悪いことですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 余暇にプログラミングしないことについていくつかの質問がありましたが、それらはすべてあなたが仕事をしているときのことです。あなたが勉強しているときはどうですか?昼間(uniで)すでに学習しているときに、余暇にも学習する必要がありますか?
10 learning 

6
インタビューで知識ベースの質問にどのように対処しますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 経験豊富なプログラマにインタビューする技術面接では、インタビュアーは知識ベースの質問をたくさんします。[例えば。これとxmlでそれを構成する方法のように]。これらの質問には1つの回答しかありません。優れたプログラマは、その回答を知らない可能性が高いため、拒否されます。これらの質問に答える良い方法はありますか?[答えはグーグル検索だけであるとインタビュアーに丁寧に伝えるように]。
10 interview 

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