ソフトウェア工学

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

5
トランザクションを使用できない場合、エンタープライズ環境でWebサービスを効果的に使用するにはどうすればよいですか?
私が取り組んでいる場所は、いくつかの基本的なルールを確立しようとしています。そして、私たちが現在持っている議論は、コードを再利用するためのローカルライブラリとWebサービスです。Webサービスは、ほとんどの企業で人気のある選択肢のようです。そして、それは、ここの開発者のほとんどが傾いていることです。 深刻な仕事にWebサービスを効果的に使用する方法がわかりません。トランザクションを使用できない場合、どうすれば複数のサービスコールを安全に実行できますか? 通知が必要な特定の条件を満たす顧客をデータベースから取得するcronジョブがあるとします。ファックス、電子メールが送信され、チケットを作成して問題を内部的に追跡します。これは、forループの各顧客に対して発生する3つの異なるサービスコールです。 そこのどこかでエラーが発生した場合、たとえば、ファックスとメールが顧客に送信されても​​、チケットは作成されない可能性があります。さらに悪いことに、このcronジョブにはバグが含まれていて、毎回同じポイントで失敗し、同じ顧客に繰り返しメールを送信する可能性があります。ライブラリがすべてローカルである場合、すべてをトランザクションにラップすることができますが、それはまったく起こりません。ただし、この例ではWebサービスを使用しています。 電子メールとFAXのメソッドは、実際にはデータベースにバックアップされたキューテーブルにデータを挿入します。これは、別のcronジョブプロセスによって処理されます。したがって、「電子メールの送信」および「ファックスの送信」サービスメソッドの呼び出しは、必要に応じて副作用なしで中止できます。 オプションは、このコード全体をWebサービス自体に配置することです。そのため、Webサービス自体は、トランザクションで電子メール、ファックス、およびチケット作成メソッドを呼び出します。ただし、トランザクションを使用するためだけにWebサービスメソッドを作成しています。この1つのcronスクリプト以外のどこからでも実際にこのメソッドを呼び出す必要がある正当な理由はありません。 このメソッドを一般的にどのように処理しますか?

4
組織内の開発者以外と内部コードを共有する必要がありますか?
私が働いている場所には、多くの開発者と、スタッフや顧客が使用する独自のアプリケーションを実行する非常に多くのコードがあります。 また、システムの内部動作を理解してお客様をよりよくサポートし、場合によってはパッチを提出することを希望する多くのスマートサポートスタッフもいます。 開発者以外のスタッフが読めるようにコードを開く必要がありますか?この決定を行う際に考慮すべき要因は何ですか?私はそれぞれの方法で多くの議論と反論に出くわし、他者の経験とよく理解されたリスクに基づいて決定をしたいと思います。 これまでのいくつかの議論: VCSのパスワードが公開されています(解決策:パスワードを取り除いてください-最初からそこにあるべきではありません) コードはホワイトボックスセキュリティ攻撃に対して無防備です(反論:これは正直/怠yな攻撃者のみを排除します) サポートスタッフは、開発者に「仕組み」の仕組みを尋ねることができます(カウンター:男性に魚を教えるなど) 組織のスタッフにコードを公開している人はいますか?それは問題を引き起こしましたか?

7
SQLが関係ベースの関数型言語として知られているのはなぜですか?
ほとんどの言語は、「関係ベース」または「高レベル」の2つに分類されることを学んでいます。私は以前にSQLを使用したことがありませんが、その構文を読むと、機能/関係ベース(Lisp、Haskell)よりも命令的/高レベルの構文のように見えますか? または、教授の講義ノートの私の解釈が間違っている可能性があります...しかし、SQLは(高レベルではなく)関係ベースの言語の1つとして間違いなくリストされており、関係ベースと機能的...またはおそらく、SQLがリレーショナルデータベースを扱うという事実が機能言語を実装すべき方法にする理由を理解していないのでしょうか?(そして、プログラミング言語を分類するときに「関係ベース」が「機能的」と同等である理由は?) ありがとう:)

3
採用プロセスにおけるプログラミングの課題はどれほど効果的ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私たちの会社は、次のようなソフトウェアエンジニアの候補者を見つけるために設計された課題を作成できると思います。 問題を解決するのが得意で、リクルーターを悩ませることはできません。 キャリアフェアで私たちのところに来るのを恐れる可能性が高いです。 現在のプログラミングの仕事では十分に活用されていない可能性が高いですが、内向的すぎて何もできません。 例については、FacebookがPietを使用して画像内のメールアドレスを非表示にすることについて説明しているこの記事を参照してください。 これが実際に機能するかどうかについての研究や確固たるデータを見つけることができません。
14 skills 

13
就職の面接ではどのようなサンプル作業のソースを使用する必要がありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 4年前に閉鎖されました。 友達の一人が解雇されました。私が彼に話しかけたとき、彼は彼が彼が取り組んだことのコピーを撮らせてはならないと言った。彼がインタビューで別の雇用主に取り組んだことをどのように見せるかを尋ねると、彼はやるべきことを説明するだろうと言われました。 プログラマーとして、以前の仕事の元雇用主のサンプルを取ることを許可すべきですか?インタビューでどのコードのソースを見せるべきでしょうか?ほとんどすべての雇用主がサンプル作業を要求する場合、送信できるものをどのように正当化するのですか?次の雇用者に合法的に示すことができるコードを手に入れるために、私たちの生涯にわたって仕事の後のプロジェクトを維持することは私たちの責任ですか?
14 interview 

2
構文解析ツリーと抽象構文ツリーの違いを説明する最も簡単な例は何ですか?
私の理解では、パーサーは解析ツリーを作成し、その後それを破棄します。ただし、抽象構文ツリーをポップアウトすることもできます。これは、コンパイラが使用すると思われます。 私は、解析ツリーと抽象構文ツリーの両方が解析段階で作成されているという印象を受けています。次に、これらが異なる理由を誰かが説明できますか?
14 parsing  trees 

6
javascriptフレームワークの爆発をどのように理解できますか?それらすべてを学ぶべきですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 まだ従来の方法でWeb開発を行っている初心者のWeb開発者(サーバー側のPHP / J2EE / Struts、クライアント側のHTML / CSS / Javascript)にとって、Trelloテクノロジースタックに関する最近のブログ投稿に圧倒されました。 この投稿で言及した新しいテクノロジーとフレームワークのリスト、特にJavascriptフレームワークの遍在性に圧倒されるのは仕方ありません。 私の質問は、これはウェブ開発の未来ですか?これらの新しいフレームワークのそれぞれが最新のWebアプリケーションのどこに収まるかを理解するのに役立つ記事、Webサイト、またはリソースはありますか?

4
サンプルテキストの多様なセットはどこで入手できますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ソフトウェアプロジェクトで使用するために英語で使用される文字または単語のシーケンスに関する統計を収集しようとしています。 多様なトピックをカバーする大量の英語のプレーンテキスト(数GBがいいでしょう)はどこで入手できますか?

9
インタビュアーに、開発チームの最大の長所と短所を尋ねるのは悪い考えですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 4年前に閉鎖されました。 開発者の地位について面接するとき、これが雇用主に尋ねるのに良い質問かどうか疑問に思っていました。 開発チームの最大の長所と短所は何ですか? 面接中にこの質問が出てくるので、見返りに質問してみませんか?チームについて知り、この長所や短所が私たちにどのような影響を与えるかを知ることができたので、非常に良い質問だと思いますが、面接官を困らせたくありません。 開発者の地位について面接するときに、この質問をすることの欠点はありますか?
14 interview 

4
オーバーロードされたメソッドの名前を変更する必要がありますか?
これらのメソッドを含むインターフェースを想定します: Car find(long id); List<Car> find(String model); このように名前を変更する方が良いですか? Car findById(long id); List findByModel(String model); 実際、このAPIを使用する開発者は、初期find()メソッドの可能な引数を知るためにインターフェイスを調べる必要はありません。 だから私の質問はより一般的です:コードでオーバーロードされたメソッドを使用することの利点は何ですか?

5
レビューするコードを選択するにはどうすればよいですか?
私は小さなソフトウェア会社の7人の開発者のチームの一員であり、定期的なグループコードとデザインレビューを紹介しようとしています。過去にいくつかのレビューを実施しましたが、散発的です。もっと定期的なものにしたいと思います。 私はコードコンプリートや他の類似のリソースを読んでいると、彼らはの力学について話どのようにコードレビューを実施することが、私は、選択する方法上の任意のベストプラクティスを見つけることができなかったものを確認することを。8年以上前のコードベースがあり、さまざまな言語をカバーしているので、見ることができるものがたくさんあります。 以下は、選択に影響を与える可能性のあるいくつかの要因です。 言語:C、Java、SQL、PL / SQL コード年齢:新しいコードと古いコード コードの使用:頻繁に使用されるコードと(効果的に)デッド/ほとんど使用されないコード コードの重要性:重要なコードと重要でないコード 開発者:ジュニア開発者コードとシニア開発者コード これは絶対的な決定的な答えを伴う質問ではないことを理解していますが、ガイダンスがあれば役に立つでしょう。 周辺に関連するいくつかの質問: コードレビューのアプローチ(重要なセクションと新しい開発者コードをレビューするという意味) すべてのコードをレビューする必要がありますか?

5
ロードテスト:1秒あたりのリクエストを生成する方法
Zeroc-ICEで実行されるサーバーコンポーネントがあります。ロードテストをしたいとき、並列ライブラリを使用して複数の要求を作成すると思いました。しかし、それはそのようになってしまいます。C#のParallel(Parallel.For)ライブラリを使用する方が簡単なようですが、すべてを同じ瞬間に正確に生成しているようには見えません。したがって、1秒あたりN個の要求を作成するための定義にはなりません。どうすればいいですか?最初に負荷テストをしたい人はだれでも実際にこれについて考えると思います。 実際に1秒あたりN個のリクエストを実際に作成する効率的な方法は何ですか? もう1つの神話は、並列プログラミングに関するものです。一般的にC#または.Netで並列プログラミングパターンを使用している場合は、ご理解ください。5つのプロセスがあるとします。5つのプロセスすべてを同時に開始する方法。リソースを消費することはどういう意味ですか?私はネット上で入手可能な多くの資料を読んでみましたが、質問に対する答えよりも多くの質問があります。 Parallel.Forを使用して、N個のスレッドを作成し、時間を測定しました。次に、タスクの列挙にTask.Factory.startを使用して同じことを試みました。測定された時間は異なっていました。それで、これらを使用することの正確な違いは何ですか?対応するクラスをいつ使用し、どのような目的のために正確に使用する必要がありますか?私たちは多くの富を持っていることが多いのですが、それをどうやって区別するのか正確にはわかりません。これは私にとってそのようなケースの1つであり、なぜ別のものを使用すべきではないのかを見つけることができません。 私はストップウォッチクラスを使用して、これらの時間を測定しました。私のシナリオでは、コンポーネントの負荷テストで、応答時間を測定する方法は何でしょうか。ストップウォッチは私にとって最良の解決策のようです。ご意見をお待ちしています。 ps:Webアプリケーション用の負荷テストツールは多数あります。私のものは、サーバーコンポーネントのカスタマイズされたケースです。私の質問は、1秒あたりN個のスレッドの作成に関するものです。 すべての意見を歓迎します。プログラミングの問題ではないと考えないでください。もちろんです。自分で製品の品質を知りたいプログラマーが自分で製品のパフォーマンスを知りたい場合は、ベルを鳴らさなければなりません。

8
繰り返しカレンダータスクをデータベースに保存する方法
これは、マイクロ管理のための小規模な個人プロジェクト用です。基本的に、次のようなSQLite3データベースにタスクを保存します。 id INTEGER PRIMARY KEY AUTOINCREMENT label TEXT deadline INTEGER そのため、各タスクには、Unixタイムスタンプとして保存される期日(期限)があります。これまでのところ、「明日:おばあちゃんを訪問」などのエントリを作成し、「おばあちゃんを訪問」というラベルを付けて新しい行を作成し、明日を期限のUNIX時間として変換します。 次に、新しいタイプのタスクを入力します:ルーチン-「毎日:クリーンキッチン」のような時間パターンで繰り返されるタスク。そのようなタスクをどのように保存またはモデル化できますか? とりあえず、毎日実行する必要があるタスクの場合、同じラベルを持つ新しい行をテーブルに生成し、期限フィールドを1日増やします。この場合、将来的に制限を修正する必要があります。たとえば、毎日のルーチンを作成すると、残りの年の毎日の新しい行が作成されます。 これを行う簡単な方法はありますか?明らかなデータベース設計の原則が欠けていますか?

2
Javaソースファイルに含まれるパブリッククラスの名前が付いているのはなぜですか?
私はJavaを学ぶ初心者です。Javaでは、すべてのソースファイルにパブリッククラスが含まれている必要があり、そのソースファイルはそのパブリッククラスと同じ名前を持つ必要があります。さらに、ソースファイルに2つのパブリッククラスを含めることはできません。この制限はなぜですか?


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