ソフトウェア工学

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

3
最適化アルゴリズムの最適性を評価する一般的な方法はありますか?
最適化アルゴリズムの最適性を評価する一般的な方法はありますか。たとえば、NPハード問題またはNP完全問題を解くアルゴリズムなどです。 これまでに私が思いついた唯一の方法は、アルゴリズムの結果を既知の最適解と比較することです。 そうでない場合、いくつかの特別な問題のための特定の方法はありますか? 編集明確にするために:最適性とは、結果が最適解の結果にどれだけ近いかを意味します。

6
サイトが負荷の下でどのように機能するかをテストする方法はありますか
Asp.net MVC Webサイトを作成し、それを共有ホスティングプロバイダーでホストしました。私のウェブサイトは非常に一般的なアイデアを取り巻いているので、将来的には同時に多数のユーザーがいる可能性があります。 そこで、私は自分のウェブサイトをオンロードパフォーマンスでテストする方法を考えていました。100人または1000人のユーザーが同時にオンラインでWebサイトを閲覧しているときのサイトのパフォーマンスと同様です。これにより、LINQクエリが適切に記述されているかどうかもわかります。

6
フレームワークランタイムをソース管理下に保存することは良い習慣ですか?
多くのソフトウェアショップがバイナリをソース管理下に置いていることを知っています。しかし、私たちのショップは、DirectXランタイム、CUDA、nVidia Optixなど、フレームワーク全体をリポジトリに格納するようになりました。 開発マシンのセットアップをより簡単にすると言われています(おそらく最新のものを入手してコーディングを開始します)。ただし、リポジトリが大幅に肥大化し、無関係な履歴が発生します。 このような使用パターンを見たことがありません。それは良い習慣だと思いますか? [編集:]分離されたサードパーティのバイナリをソース管理することに問題はありません。質問は、通常10以上のバイナリで構成されるフレームワークランタイム全体に関係しています。極端な例として、Windows SDKを取り上げます(これはリポジトリに保持しません。感謝しますが、原則として違いはありません)。

2
MITオープンソースライセンスでは、作品の派生物を(MITライセンスの下で)公開する必要がありますか?
公開したいライブラリのオープンソースライセンスを探しています。理想的には、無料または商用アプリケーションでこのライブラリを無料で使用できるようにする必要がありますが、ライブラリの派生物(ライブラリの改良など)が作成された場合は、そのライブラリの下にいるすべての人が利用できるようにする必要があります同じライセンス。 言い換えれば、私は次の倫理観を示したいと思います。「あなたはこの作品から無料で利益を得て、あなたがそれを改善すれば、私もあなたの改善から無料で利益を得ることができます」。それは私が探しているタイプのコピーレフトライセンスです。 MITライセンスは可能な解決策のように見えますが、このライセンスの対象となるコードの派生物をすべての人に公開する必要があるかどうかは不明です。誰かがこれを明確/確認できますか?私のニーズをカバーする別のより適切なオープンソースライセンスがある場合は、私も興味があります。ありがとう。

1
これは悪いデザインですか?どうすれば改善できますか?
しばらく前に書いていたのですが、最近レビューしに来て、デザインが良くないと思います。 設計は、Entity Framework 4を使用する一種のモジュラーデータベースレイヤー用です。指定された場所にある外部ライブラリからエンティティフレームワークコンテキストを(レイジーに)読み込む単一のデータベースオブジェクトがあり、読み込まれたコンテキストのインスタンスは、ハッシュテーブルに格納されます。それらの名前(EG "ContentMgmtContext")。 このシステムのデータベースとの接触はすべて、ストアドプロシージャを介して行われます。データベースを呼び出すために、クエリメソッドシグネチャは次のようになります。 List<TReturn> Query<TReturn>(string Context, string Procedure, TransactionScope Scope, List<ObjectParameter> QueryParameters) このモジュール性は私が好きなものです。ただし、このアプローチには重大な欠点が1つwhen using the database layer, the code using it has to have a reference to the library in which the context is stored, in order to access the types returned by the stored procedures through …
9 design 

3
暗黙的または明示的な行結合の推奨事項
Pythonでの暗黙的なライン結合と明示的なライン結合の推奨事項について教えてください。 特に、1つの形式を他の形式よりも好きですか?一般的なデフォルトとして何をお勧めしますか?どちらを選択するかについて、どのような基準がありますか。どちらかを優先する場合は、いつ他を例外にしますか? この質問には自分の偏見を反映した回答を心に留めていますが、自分の回答を投稿する前に、他の人の考えを知りたいと思います...そして、あなたが私が思っているよりも良い基準のセットを持つことができるなら、それなら私は確かにあなた自身の答えを受け入れます。 一部の推奨事項は他のプログラミング言語でこの選択に一般化されている可能性がありますが、言語固有の機能のため、Pythonの方が私自身のバイアスがやや強いため、一般的な理由とPython中心の理由の両方を知りたいと思いますこのトピックについて持っています。 いくつかの背景については、スタックオーバーフローに関する特定の質問を中心に議論が行われましたが、SOに関する回答がこの接線で乱雑にならないようにするために、議論をここに移動する方が適切であると考えました。元の質問。ディスカッションが進んだサンプルコードスニペットについては、その質問とその回答を確認できます。 これは簡単な例です: join_type = "explicit" a = "%s line joining" \ % (join_type) # versus join_type = "implicit" b = ("%s line joining" % (join_type))
9 python 

5
O(n)のサフィックス配列を使用した文字列の最小の辞書式回転
ACM 2003の問題を引用します。 長さn(1 <= n <= 100000)の文字列を考えます。その最小の辞書式回転を決定します。たとえば、文字列「alabala」のローテーションは次のとおりです。 アラバラ ラバラ アバラール バラアラ アラララブ ラアラバ あらばる その中で最小のものは「aalabal」です。 解決策として-私はサフィックス配列を構築する必要があることを知っています-そして、O(n)でそれを行うことができるとしましょう。私の質問はまだ、どうすればO(n)の最小回転を見つけることができますか?(n =文字列の長さ) 私はこの問題に非常に興味がありますが、それでも解決策が得られません。具体的な実装ではなく、概念と問題の解決方法に興味があります。 注:最小回転とは、英語の辞書と同じ順序であることを意味します。dはwの前にあるため、「dwor」は「word」の前にあります。 編集:サフィックス配列の構築にはO(N)が必要です 最終編集:解決策を見つけたと思います!!! 2つの文字列をマージした場合はどうなりますか?文字列が "alabala"の場合、新しい文字列は "alabalaalabala"になり、これのサフィックス配列(O(2n)= O(n)内)を作成して最初のサフィックスを取得しますか?これは正しいと思います。どう思いますか?ありがとうございました!

5
C#でその演算子の短絡ORバリエーションと非短絡バリエーションの両方があるのはなぜですか?
定期的に、私はこれについて疑問に思います: 短絡ORは常に、短絡されていないOR演算子と同じ値を返しますか? ショートサーキットORは常により迅速に評価されると思います。では、一貫性を保つために、短絡されていないOR演算子がC#言語に含まれていたのでしょうか。 私は何を逃したのですか?
9 c#  boolean  logic 

2
JavaFXには未来がありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前休業。 私は同じ問題をハッシュして再ハッシュするつもりはありませんが、最初に何を学ぶべきか(JavaFX、Flex、HTML5など)を決めるだけです。少なくとも1年。 では、今後数年間のRIAテクノロジとしてのJavaFXの見通しは何でしょうか。
9 java  ria  javafx 

8
なぜみんながto-doコメントを大文字で書くのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私も同じことをしています。コードに「やること」があるときは、と書き//TODO ...ます。しかし、これがいつ始まったのか、すべての大文字で「to-do」を書く理由があるのか​​どうか知りたいのですが。
9 comments 

3
カスタムヒープアロケーター
ほとんどのプログラムは、関数型プログラミング言語が古いオブジェクトを変更するよりも新しいオブジェクトを割り当てることを好み、ガベージコレクターが解放することを心配する程度にまで、ヒープの割り当てについてかなりカジュアルになり得ます。 ただし、組み込みプログラミングのサイレントセクターでは、メモリとリアルタイムの制約により、ヒープ割り当てをまったく使用できないアプリケーションが数多くあります。処理される各タイプのオブジェクトの数は仕様の一部であり、すべてが静的に割り当てられます。 ゲームプログラミング(少なくともハードウェアのプッシュに意欲的なゲームでは)は、その中間になることがあります。動的割り当てを使用できますが、アロケーターをブラックボックスとして処理できない十分なメモリとソフトリアルタイム制約があります、ガベージコレクションはもちろんのこと、カスタムアロケータを使用する必要があります。これが、ゲーム業界でC ++が依然として広く使用されている理由の1つです。http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.htmlのようなことができます その中間の領域には他にどのようなドメインがありますか?ゲームとは別に、カスタムアロケーターが頻繁に使用されていますか?

1
最初のMalbolgeインタープリターはどのようにテストされましたか?
ウィキペディアによれば、マルボルジュが到着したとき、最初のマルボルジプログラムが登場するまでに2年を要したため、理解が非常に困難でした。 これが真実である場合、最初のMalbolgeインタープリターはどのようにテストされましたか(Malbolgeプログラムが与えられたときにそれが正しいことを行ったかどうかを確認するため)?まったくテストされましたか?
9 testing 


2
S式の読みやすさ
一言で言えば、それを知らなかった人のために、Lisp関数/演算子/構造体はすべて次のように一律に呼び出されます: (function arg0 arg1 ... argN) では、Cのような言語では次のように表現します if (a > b && foo(param)) のようなLisp sexpに変換されます (if (and (> a b) (foo param))) 。物事がより現実的/複雑になるにつれて、対応するs式も私にとってはそうなります。 私はこれが主観的な質問である可能性が高いことを認識していますが、多くのLispハッカーにとって、これは常に対処しなければならないこの1つの小さな煩わしさでしょうか? それとも、遅かれ早かれこの構文の欠如に慣れるのでしょうか? いずれにせよ、特に長い目で見れば、読みやすさのためにブレークラインを追加すること(Cの同等のものを追加しないことがほとんどです)は良い考えですか?他の提案は大歓迎です。

2
プログラミングパラダイムとメンテナンス開発者[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 私が読んでいたのは、保守のセクションがあるソフトウェアエンジニアリングの事実と誤りです。私は何年もの間メンテナンス開発者でしたので、私は非常に興味深い事実を提示されました。3つあります。 事実41:メンテナンスは通常、ソフトウェアコストの40〜80%(平均、60%)を消費します。したがって、それはおそらくソフトウェアの最も重要なライフサイクルフェーズです。 事実42:拡張機能は、ソフトウェア保守コストの約60%を占めています。エラー訂正は約17%です。したがって、ソフトウェアのメンテナンスは、主に古いソフトウェアに新しい機能を追加することであり、修正することではありません。 事実45:より優れたソフトウェアエンジニアリング開発は、より多くではなくより多くのメンテナンスにつながります。 これは直観に反するものでしたが、変更が簡単なため、優れたソフトウェアのメンテナンスが多いことがわかります。したがって、それはより長く使用され続け、はい、より多くの変更をもたらします。 どのパラダイム(関数型、オブジェクト指向、手続き型など)が保守性が最もよく、これを裏付ける研究はありますか?

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