ソフトウェア工学

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

6
Scalaライブラリの組み込みは遅いですか?
StackOverflowでこの質問を見つけ、回答を受け入れました。これは、標準のScalaライブラリの遅いJSONパーサーに関連しています。 現状のコンセンサスは、組み込みのJSONライブラリーが遅いことであり、DMCの言葉では「それはそのようなものであり、それが現状です」ということです。 たぶん、私はここで単純に働いているだけかもしれませんが、言語を成長させるための悪いアプローチのように思えます。べきではありませんビルトインライブラリは、完璧なもの?それらはすべての人にとってすべてである必要はありません。私はScalaが拡張可能であることを受け入れます。しかし、組み込みライブラリがあれば、確かにそれは確実で、言語が提供するのと同じくらい高速でなければなりません。 私はスターコマンドに苦情を申し立てています;-) 私のような普通の人がどこでどのようにしてこれについて私の意見を表明できるか、つまりScala言語を形作るためにどこに行くことができるかを誰かが知っていますか? 更新: この質問は、否定的な意味ではありませんでした。Scala、それはクリエーターであり、Scalaコミュニティーは非常に優れています。組み込みのJSONパーサーのようなものが最適とはほど遠いことに驚いた(提供されたリンクの質問によると)
8 scala 

5
最も一般的なWebサイトのスケーラビリティの落とし穴
私たちは高いユーザー数と一般的に多くの使用を達成することを望んでいるウェブサイト/ウェブアプリケーションを設計しています。具体的には、プログラミング/スクリプト言語としてPHPを使用し、リレーショナルDBのMySQLを最初に使用する予定です。NoSQLデータベースを使用するかどうかはまだわかりません。 これに関連して、スケーラビリティを考慮して設計したいと考えています。Webサイトの最も一般的なスケーラビリティの落とし穴は何ですか?システムを簡単にスケーラブルにできるようにするために、考慮する必要がある主要な領域は何ですか?

1
CLRはどの言語で書かれていますか?
好奇心から、CLRはどの言語で書かれていますか?私はJava仮想マシンのウィキペディアエントリを読んで、C ++でプログラムされていることを確認しました。これはCLRでも同じですか? これがトピックから外れている場合は申し訳ありませんが、この質問がStack Overflowに進むのに十分な技術的であるとは思いませんでした。
8 languages  clr 

1
Rails-STIを使用するかどうか…それが問題です
6か月前に、アプリのデータのモデル化について質問し、STIに向けてアドバイスを求めました(詳細については、Railsデータモデル-ベストプラクティスの質問を参照してください)。 私はそれをいじって、それをいくらか動かして、それから気を散らして、プロジェクトを休止状態にしました。 プログラミング/ RORの6か月の経験を活かして、ゼロから再び開発を始めたところ、ビールレシピの材料をモデリングする際に、再びこの壁にぶつかりました。 簡単に要約すると、3つの成分タイプ(麦芽、ホップ、および酵母)があるとします。それぞれがいくつかの属性(名前、価格、ベンダー)を共有しますが、それぞれにその成分タイプに固有の属性もあります。それらはすべて関連しています(それらはすべて成分です)が、「動作」は異なります(たとえば、穀物がすりつぶされ、ホップ/酵母などに適用されないものに対処するロジックが存在するなど)。 成分が十分に異なるので、dbに3つの別個のテーブルを置くことだけを考えています...しかし、コントローラーについてはどうですか?単一の成分コントローラーを使用して個別のモデルを管理できますか? 私はSTIの代替(クラステーブルの継承、およびマルチテーブルの継承)について読みましたが、すべてのソリューションは扱いにくいようです。STIの便利さ(タイプに関係なく、単一のテーブルクエリですべての成分を取得するなど)の欠点がない(nullフィールド、サブクラスやフィールドを追加し続けると扱いにくいテーブルなど)代替手段はありますか? 申し訳ありませんが、この質問は少しあいまいですが、明確な解決策を見つけることができないように感じ、現在、どちらの方法がより悪が少ないかを理解しようとしています。他の人もこれに対処していると思います。さまざまなソリューションの長所と短所を聞きたいです。ありがとう!

6
累積エラーの非技術的な良い例は何ですか?
私は、累積的なエラーの影響と、絶対計算を使用することがなぜ重要であるのかを、技術的でない用語で説明する必要があるレポートに取り組んでいます。 dictionary.comからの「累積エラー」の定義: 一連の測定または計算中に次第にまたは重要度が徐々に増加するエラー。観察中に増大するエラー 理想的には、実際の例を挙げて、具体的なことを知らなくてもその概念を理解できるようにすることができます。 私が最初に考えたのは、かなり有名な「チャイニーズウィスパーズ」ですが、「現実の世界」として正確に分類することはしません。誰かがより良い例を知っていますか?

11
オブジェクト指向のものは本当にそれほど重要ですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 何年もの間、私はアルゴリズム関連の作業を行っており、インターネット検索用のスケーラブルなデータ構造を作成しています。情報検索関連の作業など 上記で述べたことには共通点があります。上記すべてのもの; C ++のような言語でコーディングされている場合は、それぞれ少数のクラスが必要です。私はそれらが興味深い問題であることを意味しますが、負荷の高いオブジェクト指向のものに関しては複雑ではありません。継承や仮想化などを使用したことがありません。ジェネリックプログラミングやテンプレートなどを頻繁に使用しています。 私はC ++が大好きです(-かさばるOOのもの、Erlangの作成者であるJoe Armstrongの言うところが好きなので、OO Worldではバナナを要求すると、大きなジャングルとバナナを抱えているゴリラができます)。私はJavaやPythonのような他の言語でのコーディングも楽しんでいます。 今私の質問は、私が取り組んでいるプロジェクト/アルゴリズムの種類を楽しんでいるからです。オブジェクト指向の要素を本当に学ぶ必要がありますか。継承、動的ポリモーフィズム(仮想)のようなものを使用するだけで、より優れたコーダー/デザイナーになれますか?または、関数型プログラミングの世界に移動できますか(私は今までそれを行っていません)、タスク/アルゴリズムに集中でき、名詞の王国に基づいたオブジェクト指向の要素、has-a、is-aルールを使用できないので、より魅力的です私? 簡単に言えば、OOは私が上記で言及した種類のプロジェクト/アルゴリズムについて私を助けることができますか? 編集: ここに追加する1つの非常に興味深いリンク: http://steve-yegge.blogspot.in/2006/03/execution-in-kingdom-of-nouns.html

12
コード作成の自動化にどれくらい近づきましたか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 また、現代のエディターによって挿入されたオートコンプリートや自動コードスニペット、またはポリモーフィックコードを意味するものではありません。しかし、与えられた入力とタイプ、および望ましい出力の情報を通過し、選択した言語で有効なコードを出力できるプログラムの最先端は何ですか。遺伝的プログラミング、遺伝子発現プログラミングは知っていますが、他の取り組みについては知りません。また、グーグルはあまり現れません。 この面での進歩を誰かが知っていますか? 編集:「有効なコードを出力する」と言うとき、私はAIまたは類似の何かがロジックと制御のフローを処理し、命令型言語で実装することを意味します。命令型言語のみです。それが難しい部分だからです。それでも、この種のアイデアをサポートするために開発されている新しい言語を知っている場合は、言及してください。おそらく、現在の言語セットは、最初に遭遇する可能性のある初期のAIには適していない可能性があります。

1
ビジネスルールがMVCでの表示に影響する場合
MVC設計パターンは、ビジネスルールをプレゼンテーションから分離することにつながります。 ただし、ビジネスルールがプレゼンテーションに影響を与えることがあります。これに対処する最良の方法は何ですか?ViewModelを使用する必要があるのはそのときですか? たとえば、存在しないライブラリアプリケーションに戻って、図書館員が返却された本をスキャンしています。システムは、本が遅れていることを示し、その常連客に罰金を課します。 特定の従業員は、特定の条件に基づいて罰金を無効にするセキュリティを持っている場合があります。 ライブラリアプリケーションのプレゼンテーションレイヤーでは、従業員が罰金を0に設定するか、ボタンをクリックして罰金を上書きする必要があります。 しかし、これを行うためのセキュリティがない従業員は、料金を無効な入力またはおそらく読み取り専用として見る必要があります。 セキュリティだけがビジネスルールではない場合があることに注意してください。これは単なる例です。たとえば、アプリケーションのどこかに設定情報が設定されていて、画面のフィールドが不要になるなどです。 このコードでは、誰でも罰金を変更してから検証メッセージを表示することができますが、それは良いユーザーエクスペリエンスではありません。 これを達成するための良い習慣は何ですか?(ASP.NET MVCを使用して)考えられるオプションは次のとおりです。 ビュー自体にビジネスルールをチェックさせ、フィールドを無効または有効にします。 ファインフィールドのプレゼンテーションを実装するHTMLHelper関数を使用し、そのヘルパー関数にビジネスルールをチェックさせます。 コントローラーにビジネスルールを確認させ、別のビューを使用してもらいます。 コントローラーにビジネスルールをチェックさせ、フィールドが有効かどうかを示すプロパティをViewBagに設定します。 ViewModelを使用して、ビジネスルールをチェックし、フィールドが有効であることを示す情報を設定します。 オプション1と2では、プレゼンテーションレイヤーでビジネスルールの検証を行わなければならず、混乱を招きます。 オプション3では、2つのビューが定義されているため、作業が重複します。 オプション4および5では、プレゼンテーションレイヤーがフィールドが有効または無効になっていることを認識している必要がありますが、理由は認識できません。私は4または5が一番好きだと思います。 私が考えていない他のオプションはありますか?

8
解説スタイルは、読者がコードを理解する方法に影響しますか?
この質問は、過去2か月間私を悩ませてきました。 少し前に、優れたプログラマーである友人がいくつかのサンプルコードを教えてくれました。初めて、独自のコメント整理スタイルに気づきました。彼は私がコード自体をより快適にするような方法でコメントを設計するためにいくつかの努力をしました。例えば: ///////////////////////////////////////////// // // // This code prints a basic "Hello world" // // message to the console screen. You can // // change the text in the brackets. // // // ///////////////////////////////////////////// #include <iostream> int main() { cout << "Hello world"; } 彼が単に書くことができたとき /* This code prints a …
8 comments 

5
MySQLは中小規模のビジネスアプリケーションで実行可能ですか
Microsoftスタック(VB.Net、ASP.Net、SQL Server)を過去10年間使用してきた後、WindowsとMacの両方の環境向けのアプリケーションを開発する必要に直面しました。 データベースのMySQLは両方のプラットフォームで使用できることが示唆されています。 MySQLはオープンソースプロジェクトであるという印象を受けましたが、最近購入されましたか?/ 引き継がれる?オラクル。 MySQL Webサイトは、別のオープンソースプロジェクトで使用されていない限り、ライセンス料を支払う必要があり、その料金は他のデータベースコストと同程度であることを示しているようです。SQL Server、Filemaker。 MySQLはLAMP環境で自由に使用できると誰かが提案しました(ただし、Windowsサーバーの場合はどうでしょうか?)。MySQLの経験を展開している誰かが、関連する可能性のある他の落とし穴とともに、これを確認または説明できますか?

6
静的関数とクラス
BigDecimals を使用していくつかの基本的な計算を行うためのユーティリティ関数を構築したいとします。たとえば、の平均を計算する関数が必要ですList<BigDecimal>。 最善のアプローチは何ですか?静的関数またはユーティリティクラス? public static BigDecimal computeAverage(List<BigDecimal> numbers) または public class BigDecimalUtil public computeAverage(List<BigDecimal> numbers)

3
あなたのアプリとあなたのウェブサイトの間のコミュニケーションの最良の方法?PHP、Webサービスなど
自分のウェブサイトと通信したいアプリケーションを作成しています。アプリは、ウェブサイトのデータベースから特定のアプリユーザーのデータを取得する必要があります。これを行うための最良の方法は不明です。 たとえば、これを行う1つの方法は、アプリにログインページを作成し、それが私のウェブサイトのlogin.phpロジックにヒットすることです。1つのコードベースを使用して、Webサイトとアプリの両方のサインインを処理できるため、これは便利です。 私が見た別のソリューションは、JSONリクエストを使用してアプリとWebサイト間の通信を処理することです。JSONオブジェクトは作成と解析が簡単なので、これは便利です。 私は基本的に、このコミュニケーションを実現するための最良の/一般的な方法、お互いを重ねることの長所と短所、および考慮すべきその他のセキュリティ問題を知りたいです。 たとえば、一方の方法をもう一方の方法で使用する場合、機密のユーザーデータを公開するリスクはありますか?もしそうなら、これをどのように防ぐことができますか?暗号化とユーザー検証は、どこでどのように機能しますか?

1
「統合テスト詐欺」の削除-コラボレーションおよび契約テストの理解[終了]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 8年前に閉鎖。 私は最近、統合テストが JB Rainsbergerによる詐欺であることを確認しました。この件について、さらに資料を探しています。私は、Rainsbergerによって説明されている概念に興味をそそられ、どのようにそれらを適用するかについても混乱している(つまり、単体テストを行う必要がある場合の統合テスト)ことにどれほどの誤りがあるかについてショックを受けました。説明したコラボレーションテストとコントラクトテストの詳細を知りたいのですが、どこから始めればよいかわかりません。 私の心に残った唯一のことは、テストが尋ねる必要がある4つの質問です: サイドA: Do I ask the right question? Can I deal with the answer? サイドB: Can I answer a question? Do I answer correctly? しかし、これをアプリケーションスタックのランダムなメソッドにどのように適用すればよいのでしょうか。 実世界の例を取り、孤立したマイクロテストのこれらのアイデアを適用する本、チュートリアル、または例がありますか?理想的には、この例ではJava、Spring + PowerMock / Mockito / EasyMoockを使用しています これらの概念を一般的に扱っており、それらをよりよく理解するのに役立つ任意の文献をいただければ幸いです。 また、適切なユニットテストを行う方法、さらには既存のコードをリファクタリングしてサンプルを投稿する方法について、より詳細な質問をすることができるフォーラムがある場合は、すばらしいでしょう。 ありがとう! 編集-いくつかの追加の考え: モックを使用する場合と、スタブを使用して、テスト対象のクラスをそのコラボレーターから分離する場合の一般的なルールはありますか?4つの質問に適用できますか? 最良のモックフレームワークはPowerMockのようで、モックしたいクラスとそれが返す必要があるクラスをテストごとに正確に定義できますか、それとも上記の質問に使用したものがありますか?PowerMockを使用して、DAOやGUIなど、実際のアプリケーションスタックの一部に特定の原則の一部またはすべてを適用する優れたチュートリアルはありますか? 編集2-例 テストしたいメソッドの種類と私の考えのほんの一例 注文を保存するWebサービスがあります。この段階では、最高のセキュリティについてあまり心配していません。そのため、いくつかのセキュリティを確保するために、サービスはユーザー名とパスワードを使用して保存要求を認証します。認証さOrderManagerれると、を保存するためにが呼び出されますOrder。内部的には、マネージャーは、新しい注文を作成する必要があるか、既存の注文を更新する必要があるかを決定します。(それはWebSericeにとって重要ではありませんよね?) @WebService public class …

1
一部のソフトウェアエンジニアリング手法とソフトウェアエンジニアリングサクセスストーリーの間に相関関係はありますか?
私はLeonard Mlodinow の本「The Drunkard's Walk:How Randomness Rules Our Lives」を読んでいて、本当に啓蒙的な本です。本は確率と人間の推論を扱います。そして、記録のために、いくつかのことは時々うまくいきますが、あなたがそれをうまく動かしたと思ったものが、実際にそれを動かしたものとは無関係である可能性があるとだけ言いましょう。 確率は直感的ではありません。 しかし、それは私にアイデアを与えました。ソフトウェアエンジニアリングの取り組みの結果を数値化しようと試みた、これに関する研究はすでにあるはずです(もちろん、それ自体が難しい問題です)。そしてこれらの研究は、定量化可能な成功という点で、どのようなソフトウェアエンジニアリング手法が本当に重要であるかを指摘する必要があります。 すなわち TDDを採用するチームthisは、thisある種の問題を抱えている可能性がはるかに低くなります。 SOLID原則を採用しているチームthisは、thisある種の問題を抱えている可能性がはるかに低くなります。 などなど ここで私が探しているのは、実装と成功の間の強い相関を示すソフトウェアエンジニアリングの実践です。私はこれらのものが存在すると確信していますが、それらを手に入れるのは難しいので、私はこの質問をします。 実装と成功との間に強い相関関係があることを知っている研究や実践はありますか(成功は多少恣意的ですが、あなたはその考えを理解していると思います)? ソフトウェアエンジニアリングがカウボーイコーディングよりも優れているという考えを売り込むなら、証拠が必要だと思います。

5
メソッドを呼び出すとき、base.methodnameとthis.methodnameを使用する必要がありますか?
C#では、継承されたクラスセットを使用して、メソッドを呼び出すときに、オーバーライドされたメソッドであるかどうかに関係なく、キーワード 'base.methodname and this.methodname' ...を使用する必要がありますか? コードはロジックの点で変更される可能性が高く、おそらくIF-ELSEのような条件が後日発生する可能性があります。したがって、その時点で、開発者はコードの各行を再訪して、どのメソッドが呼び出されるかを正しく選択するように強いられます--- base.methodname()またはthis.methodname()ELSE。 NETフレームワークはDEFAULT(そのbase.methodname()だと思います)を呼び出し、ロジック全体がトスに進むことができます。
8 c#  inheritance 

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