ソフトウェア工学

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

1
一連の制約が与えられたセミランダムな組み合わせ/順列の数
バックグラウンド: 私が働いている寄宿学校には約60人の生徒がいます。カウンセラーは私の同僚と私に、手よりも夕食のための座席配置を考え出すより良い方法を考え出すように頼みました。彼は残りの学年度の宿題を希望しています。また、学生や教職員から聞いた問題のいくつかを解決するように依頼してくれました。 制約: ほとんどの学生はアメリカ出身ではないので、同じ国籍の人々に囲まれているとき(つまり、夕食の席で)、英語を練習する代わりに、流暢な言語を話します。 学生が特定のテーブルに全体的に「多すぎる」回数座っていると、不満が出ます。 または、同じテーブルに2回以上続けて座っている場合、 そして、何人かの生徒は仲良くしないので、一緒に座ることができません。 入力: 実行時に、プログラムには以下が提供されます。 一組の人々、 テーブルのセット、および 各テーブルの座席数は異なります(繰り返しが可能です) 両方のセットのサイズ、および各テーブルのサイズは、割り当てごとに変わりません。 テスト: 私はさまざまな国籍の18人と、サイズ3〜6の4つのテーブルを使用しています。私はそのデータセットに意味があると思う数を選びました: 同じ国籍の人が同時に座ることができるのは3人までです 誰もテーブルに4回以上座ることができません 結果: 入力データを変更せずにジェネレータを約15回実行しました。毎回、6〜12週間の割り当てがあります。 質問: (重要度の低いものから) プログラムを実行するたびに、生成される割り当ての数が異なるのはなぜですか?データセットは実行間で変化していません。 どうやって見つけるのですか... 特定のテーブルに座ることができる同じ国籍の最小人数、 彼らが与えられたテーブルに着席する全体的な最小回数 生成された割り当ての数を最大化しますか? これらが実際に正しい数であることをどのように保証しますか? 編集: 新しい課題を生成するたびにCollections.shuffle(List)、人のリストを呼び出して順序をランダム化します。次に、テーブルと人のリストを、github でのkapilidの8つのクイーンの実装に基づくバックトラッキングメソッドに渡して、人をテーブルに割り当てます。

4
C ++のJavaスタイルクラス
私はこの記事に出くわし、最初は少し奇妙に見えるc ++でのコーディングのスタイルを提案しました。しかし、それを読んで少し考えた後、私は本当にそれを試してみることを考えています。 最も魅力的な利点は、メソッドのリファクタリングの容易さです。新しいクラスを作成している間、私は常にメソッド名やパラメーターなどを変更していることに気づき、c ++では2つのファイル(.h、.cpp)のメソッド名を変更しなければならないのは非常に面倒です。 私はこのスタイルに問題があることを見つけようとしましたが、経験豊富なc ++プログラマーにとってコードが実際に奇妙に見えて感じられるという事実は別として、大きな欠陥を見つけることはできません。しかし、私は非常に経験の浅いc ++プログラマなので、ここにいる誰かが潜在的な危険について私に警告してくれることを願っています。 だから私の質問は: このスタイルのコーディングを使用することの重大な欠点はありますか?

7
設計部品DB
(電気)部品を扱うツールを開発しています。パーツは、作成、表示、変更、削除、グループ化などができます... この質問を将来の訪問者に役立つようにするために、DBのパーツを管理することは、DBのどのパーツ(CD、車、食べ物、学生など)に関係なく非常に一般的であるため、この質問を普遍的にします。 3つの異なるDB設計を考えています。 特殊なパーツ属性にパーツテーブルと派生テーブルを使用する。 Parts (id, part_type_id, name) PartTypes (id, name) Wires (id, part_id, lenght, diameter, material) Contacts (id, part_id, description, picture) 専用のパーツテーブルのみを使用します。 Wires (id, name, lenght, diameter, material) Contacts (id, name, description, picture) すべての値を含むParts-、PartTypes-、ValueTypes-、PartValuesテーブルを使用する。 PartTypes (id, name) ValueTypes (id, part_type_id, name) Parts (id, part_type_id, name) PartValues (part_id, value_type_id, value) …

3
なぜGOTOはPHP 5に含まれていたのですか?[閉まっている]
ここで何が尋ねられているのかを知るのは難しい。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 GOTOコントロールキーワードがPHP 5.3.0で導入されたことを少し前に発見しました。 http://php.net/manual/en/control-structures.goto.php なぜそれが起こったのですか? この背後にある言語設計の目標は何ですか? PHP開発者コミュニティはそれを求めましたか?

2
Javaプログラムから関数を呼び出してプリミティブ型の結果を受け取ることができるJavaでRubyファイルを実行する方法は?
何を求めているのかよくわかりません(笑!)。そうでない場合は、申し訳ありません。 Javaプログラムがあるとします。それは持っているMainとJavaCalculator、クラスを。JavaCalculatorのようないくつかの基本的な機能があります public int sum(int a,int b) { return a + b } 今、私はルビーファイルを持っていると仮定します。と呼ばれるMyProgram.rb。 MyProgram.rbルビプログラムに期待できるものをすべて含むかもしれません。次のものが含まれていると仮定します。 class RubyMain def initialize print "The sum of 5 with 3 is #{sum(5,3)}" end def sum(a,b) # <---------- Something will happen here end end rubyMain = RubyMain.new 良い。さて、あなたは私がしたいことをすでに疑っているかもしれません: Javaプログラムを実行したい Rubyファイルを実行させたいMyProgram.rb Rubyプログラムが実行されると、のインスタンスが作成され、JavaCalculatorそのsum関数が実行され、値が取得されてから出力されます。 ルビファイルは正常に実行されました。 Javaプログラムが閉じます。 注:「のインスタンスを作成するJavaCalculator」は必ずしも必要ではありません。クラスsumから関数を実行するだけで十分Mainです。 私の質問:そのようなことは可能ですか?特定の処理を実行して結果を取得するようにJavaプログラムに命令できるRubyファイルを内部で実行するJavaプログラムを実行できますか?上記の例では、RubyファイルがJavaプログラムに合計を求めて結果を返すように要求しています。 …

2
基本的なスタック操作操作はどれですか?
私はスタック指向の仮想マシンを作成しているので、それがどのように機能するかについての一般的な理解のためにForthを学び始めました。次に、仮想マシンに実装する必要のある重要なスタック操作操作をリストしました。 drop ( a -- ) dup ( a -- a a ) swap ( a b -- b a ) rot ( a b c -- b c a ) 次の4つのスタック操作操作を使用して、他のスタック操作操作をシミュレートできると思います。例えば: nip ( a b -- b ) swap drop -rot ( a b c -- c a b …

3
IOCおよびステートレスサービス。短命ですか、それとも単一インスタンスですか?
ガベージコレクションされたフレームワークを前提として、IOCコンテナーを使用して純粋にステートレスなサービスを注入する場合、コンテナーの単一インスタンスのライフスパンを使用するか、使用するたびにオブジェクトを再作成し、オブジェクトとそのすべての依存関係を破棄する方が一般的です使い終わったらすぐに?

2
障害者がソフトウェアを使用できるようにするには、どのような手順を踏む必要がありますか?
私が書いているソフトウェアが、失明やマウスやキーボードを使用できないなど、さまざまな障害を持つ人々が使用できることを確認したいと思います。 残念ながら、スクリーンリーダーなど、身体の不自由な方がコンピュータをより簡単に、または簡単に使用できるようにする方法については、私は経験がありません。私は実際に障害について多くの経験をしたことがなく、残念ながら私が尋ねることができる障害者を知りません。 他の人々が彼らのソフトウェアがさまざまな能力を持つ幅広い人々に利用可能であることを確認するために何をしているのだろうと思っていましたか? これは、開発者がしばしば無視する主題であるように思われ、それは本当の恥だと思います。 編集:以下の回答ですでに提供されている情報に加えて、誰かがデスクトップ開発に関連する特定の情報を持っている場合、私は感謝します。特に、Windows、Mac OS X、Linuxのクロスプラットフォーム開発に適用される方法。

2
製品所有者の評価[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 製品所有者をどのように評価しますか?より具体的には、製品所有者のパフォーマンスレビューをどのように実施しますか?製品の所有者を確認するときに、どのような品質または特性を確認しますか?

7
クラスがロジックのない情報のコレクションのみであることが適切ですか?
私はクラス持っていると言うPersonのインスタンス変数を持っているage、weightとheight、と別のクラスFruitのインスタンス変数を持っているsugarContentとしますtexture。Person一方、クラスは、セッターとゲッター保存メソッドを持たないFruitクラスは、セッターとゲッターの両方があるとのようなロジック・メソッドをcalculateSweetness。Fruitクラスは、クラスよりも実践的なクラスのタイプですPerson。つまり、Personクラスはあまり目的を持っていないようです。Fruitクラスはデータを整理し、実際にはロジックのメソッドを含みますが、データを整理するためだけに存在します。

6
バグレポートはどのようにスプリントに組み込まれますか?
最近スクラムについて読んでいます。私の理解では、スプリントが始まる前に会議が開かれ、製品のバックログから次のスプリントのバックログに何を移動するかを決定します。現在のスプリントで機能が完了すると、「Ready to QA」バケットに入れられ、この時点で混乱します。バグレポートは製品のバックログに戻りますか?このサイクルで実行する作業はすでに決定しているため、スプリントバックログに戻れないと思いますか?QAがバグを検出するとどうなりますか?どこに行くの?

3
賛成投票に適したHTTPメソッドは何ですか?
RESTfulな観点から、(StackExchangeのような)フォーラム投稿を賛成するアクションに最も適切なHTTPメソッドは何ですか? 投票の場合はPOSTを、投票を取り消す場合はDELETEと言いますが、ユーザーはメッセージごとに1つの票を投じることしかできないため、投票はべき等演算と見なすことができるため、PUTも可能です。
8 rest  http  semantics 

1
インメモリ辞書によるキャッシング。私たちはそれをすべて間違っていますか?
このアプローチは、私たちの会社で何かをするために受け入れられている方法です。簡単な例:顧客のデータの一部がサービスから要求された場合、その顧客のすべてのデータ(サービスに関連する部分)をフェッチし、それをメモリ内辞書に保存して、次の要求でそこから提供します(シングルトンサービスを実行します)。更新はすべてDBに送信され、次にメモリ内辞書が更新されます。それはすべて単純で無害に思えますが、より複雑なビジネスルールを実装すると、キャッシュが同期しなくなり、見つけにくいバグに対処する必要があります。時々、データベースへの書き込みを延期し、それまで新しいデータをキャッシュに保持します。テーブルには他のテーブルとの関係が多く、集計データをすばやく表示する必要があるため、数百万の行をメモリに格納する場合があります。 このすべてのキャッシュ処理はコードベースの大きな部分を占めており、これは正しい方法ではないように思います。このすべてのジャグリングはコードに過度のノイズを追加し、実際のビジネスロジックを理解することを困難にします。ただし、毎回データベースにアクセスする必要がある場合、妥当な時間内にデータを提供できるとは思いません。 私は現在の状況に不満を持っていますが、これ以上の選択肢はありません。私の唯一の解決策は、NHibernateの2番目のレベルのキャッシュを使用することですが、これに関する経験はほとんどありません。多くのキャンパニーがパフォーマンスを上げるためにRedisまたはMemCachedを頻繁に使用していることを知っていますが、どのように私たちのシステムに統合するかわかりません。また、メモリ内のデータ構造やクエリよりもパフォーマンスが良いかどうかもわかりません。 検討すべき代替のアプローチはありますか?
8 caching 


5
テスト駆動型とビジネス要件の絶え間ない変化
CTO / CIOによって設定された開発チームの新しい要件の1つは、テスト駆動型の開発になることですが、開発のライフサイクルを把握していないため、ビジネスの残りの部分は役に立たないと思います。 1つのスプリント内で常に変更されました。これは、10のテストケースを書くことに時間を浪費することに苛立ち、明日は役に立たなくなります。 これらの要件の変更を回避し、開発ライフサイクルについてビジネスを教育するプロセスを設定することを提案しました。ビジネスがアイデアを得られない場合はどうなりますか?あなたならどうしますか?
8 agile  tdd 

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